IssuerSerial.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)package org.bouncycastle.asn1.x509; 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.ASN1EncodableVector; 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.ASN1Integer; 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.ASN1Object; 6f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.ASN1Primitive; 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.ASN1Sequence; 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.ASN1TaggedObject; 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)import org.bouncycastle.asn1.DERBitString; 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)import org.bouncycastle.asn1.DERSequence; 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)public class IssuerSerial 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) extends ASN1Object 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles){ 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GeneralNames issuer; 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASN1Integer serial; 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DERBitString issuerUID; 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public static IssuerSerial getInstance( 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) Object obj) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (obj == null || obj instanceof IssuerSerial) 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return (IssuerSerial)obj; 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (obj instanceof ASN1Sequence) 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return new IssuerSerial((ASN1Sequence)obj); 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName()); 33f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 34f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 35f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public static IssuerSerial getInstance( 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASN1TaggedObject obj, 37f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) boolean explicit) 38f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return getInstance(ASN1Sequence.getInstance(obj, explicit)); 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public IssuerSerial( 435f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ASN1Sequence seq) 44f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 45f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (seq.size() != 2 && seq.size() != 3) 46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 475f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) throw new IllegalArgumentException("Bad sequence size: " + seq.size()); 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 50f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) issuer = GeneralNames.getInstance(seq.getObjectAt(0)); 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) serial = ASN1Integer.getInstance(seq.getObjectAt(1)); 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 53f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (seq.size() == 3) 54f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 55f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) issuerUID = DERBitString.getInstance(seq.getObjectAt(2)); 56f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 57f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 58f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 59f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public IssuerSerial( 60f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) GeneralNames issuer, 61f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASN1Integer serial) 62f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 63f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) this.issuer = issuer; 64f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) this.serial = serial; 65f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 66f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) public GeneralNames getIssuer() 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 69f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return issuer; 70f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 715f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 72f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public ASN1Integer getSerial() 735f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) { 745f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return serial; 755f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 76f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 77f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public DERBitString getIssuerUID() 78f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 79f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return issuerUID; 80f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 81f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 825f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) /** 83f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * Produce an object suitable for an ASN1OutputStream. 84f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * <pre> 85f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * IssuerSerial ::= SEQUENCE { 86f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * issuer GeneralNames, 87f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) * serial CertificateSerialNumber, 885f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) * issuerUID UniqueIdentifier OPTIONAL 895f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) * } 905f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) * </pre> 91f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) */ 92f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) public ASN1Primitive toASN1Primitive() 93f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 94f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) ASN1EncodableVector v = new ASN1EncodableVector(); 95f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 96f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) v.add(issuer); 97f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) v.add(serial); 98f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) if (issuerUID != null) 100f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) { 1015f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) v.add(issuerUID); 1025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) } 103f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 104f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return new DERSequence(v); 105f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) } 106f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 107f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)