1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.asn1.cms;
2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.math.BigInteger;
4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.ASN1EncodableVector;
6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.ASN1Integer;
7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.ASN1Object;
8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive;
9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.ASN1Sequence;
10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.DERSequence;
11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x500.X500Name;
12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x509.Certificate;
13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x509.X509CertificateStructure;
14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x509.X509Name;
15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class IssuerAndSerialNumber
17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    extends ASN1Object
18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{
19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    private X500Name    name;
20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    private ASN1Integer  serialNumber;
21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public static IssuerAndSerialNumber getInstance(
23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        Object  obj)
24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        if (obj instanceof IssuerAndSerialNumber)
26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        {
27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom            return (IssuerAndSerialNumber)obj;
28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        }
29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        else if (obj != null)
30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        {
31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom            return new IssuerAndSerialNumber(ASN1Sequence.getInstance(obj));
32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        }
33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return null;
35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
37a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom    /**
38a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom     * @deprecated  use getInstance() method.
39a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom     * @param seq
40a198e1ecc615e26a167d0f2dca9fa7e5fc62de10Brian Carlstrom     */
41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public IssuerAndSerialNumber(
42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        ASN1Sequence    seq)
43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.name = X500Name.getInstance(seq.getObjectAt(0));
45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.serialNumber = (ASN1Integer)seq.getObjectAt(1);
46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public IssuerAndSerialNumber(
49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        Certificate certificate)
50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.name = certificate.getIssuer();
52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.serialNumber = certificate.getSerialNumber();
53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
55e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public IssuerAndSerialNumber(
56e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        X509CertificateStructure certificate)
57e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
58e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.name = certificate.getIssuer();
59e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.serialNumber = certificate.getSerialNumber();
60e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
61e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
62e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public IssuerAndSerialNumber(
63e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        X500Name name,
64e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        BigInteger  serialNumber)
65e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
66e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.name = name;
67e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.serialNumber = new ASN1Integer(serialNumber);
68e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
69e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
70e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    /**
71e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * @deprecated use X500Name constructor
72e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     */
73e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public IssuerAndSerialNumber(
74e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        X509Name    name,
75e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        BigInteger  serialNumber)
76e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
77e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.name = X500Name.getInstance(name);
78e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.serialNumber = new ASN1Integer(serialNumber);
79e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
80e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
81e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    /**
82e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * @deprecated use X500Name constructor
83e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     */
84e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public IssuerAndSerialNumber(
85e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        X509Name    name,
86e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        ASN1Integer  serialNumber)
87e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
88e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.name = X500Name.getInstance(name);
89e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        this.serialNumber = serialNumber;
90e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
91e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
92e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public X500Name getName()
93e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
94e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return name;
95e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
96e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
97e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public ASN1Integer getSerialNumber()
98e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
99e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return serialNumber;
100e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
101e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
102e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    public ASN1Primitive toASN1Primitive()
103e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    {
104e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        ASN1EncodableVector    v = new ASN1EncodableVector();
105e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
106e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        v.add(name);
107e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        v.add(serialNumber);
108e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
109e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom        return new DERSequence(v);
110e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    }
111e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom}
112