1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1.pkcs;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.math.BigInteger;
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1EncodableVector;
64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Integer;
74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object;
84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive;
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Sequence;
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.DERSequence;
114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.x500.X500Name;
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.x509.X509Name;
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class IssuerAndSerialNumber
154c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    extends ASN1Object
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    X500Name name;
184c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    ASN1Integer  certSerialNumber;
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public static IssuerAndSerialNumber getInstance(
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        Object  obj)
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        if (obj instanceof IssuerAndSerialNumber)
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            return (IssuerAndSerialNumber)obj;
26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
2770c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom        else if (obj != null)
28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
2970c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom            return new IssuerAndSerialNumber(ASN1Sequence.getInstance(obj));
30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3270c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom        return null;
33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3570c8287138e69a98c2f950036f9f703ee37228c8Brian Carlstrom    private IssuerAndSerialNumber(
36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        ASN1Sequence    seq)
37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.name = X500Name.getInstance(seq.getObjectAt(0));
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.certSerialNumber = (ASN1Integer)seq.getObjectAt(1);
40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public IssuerAndSerialNumber(
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        X509Name    name,
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        BigInteger  certSerialNumber)
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
464c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.name = X500Name.getInstance(name.toASN1Primitive());
474c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.certSerialNumber = new ASN1Integer(certSerialNumber);
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public IssuerAndSerialNumber(
51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        X509Name    name,
524c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        ASN1Integer  certSerialNumber)
53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
544c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.name = X500Name.getInstance(name.toASN1Primitive());
55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.certSerialNumber = certSerialNumber;
56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public IssuerAndSerialNumber(
594c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        X500Name    name,
604c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        BigInteger  certSerialNumber)
614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
624c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.name = name;
634c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        this.certSerialNumber = new ASN1Integer(certSerialNumber);
644c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public X500Name getName()
67b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
68b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return name;
69b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
70b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Integer getCertificateSerialNumber()
72b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
73b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return certSerialNumber;
74b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
75b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
764c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive toASN1Primitive()
77b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
78b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        ASN1EncodableVector    v = new ASN1EncodableVector();
79b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
80b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        v.add(name);
81b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        v.add(certSerialNumber);
82b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
83b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return new DERSequence(v);
84b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
85b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
86