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