IssuerAndSerialNumber.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.pkcs;
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.X509Name;
13
14public class IssuerAndSerialNumber
15    extends ASN1Object
16{
17    X500Name name;
18    ASN1Integer  certSerialNumber;
19
20    public static IssuerAndSerialNumber getInstance(
21        Object  obj)
22    {
23        if (obj instanceof IssuerAndSerialNumber)
24        {
25            return (IssuerAndSerialNumber)obj;
26        }
27        else if (obj instanceof ASN1Sequence)
28        {
29            return new IssuerAndSerialNumber((ASN1Sequence)obj);
30        }
31
32        throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName());
33    }
34
35    public IssuerAndSerialNumber(
36        ASN1Sequence    seq)
37    {
38        this.name = X500Name.getInstance(seq.getObjectAt(0));
39        this.certSerialNumber = (ASN1Integer)seq.getObjectAt(1);
40    }
41
42    public IssuerAndSerialNumber(
43        X509Name    name,
44        BigInteger  certSerialNumber)
45    {
46        this.name = X500Name.getInstance(name.toASN1Primitive());
47        this.certSerialNumber = new ASN1Integer(certSerialNumber);
48    }
49
50    public IssuerAndSerialNumber(
51        X509Name    name,
52        ASN1Integer  certSerialNumber)
53    {
54        this.name = X500Name.getInstance(name.toASN1Primitive());
55        this.certSerialNumber = certSerialNumber;
56    }
57
58    public IssuerAndSerialNumber(
59        X500Name    name,
60        BigInteger  certSerialNumber)
61    {
62        this.name = name;
63        this.certSerialNumber = new ASN1Integer(certSerialNumber);
64    }
65
66    public X500Name getName()
67    {
68        return name;
69    }
70
71    public ASN1Integer getCertificateSerialNumber()
72    {
73        return certSerialNumber;
74    }
75
76    public ASN1Primitive toASN1Primitive()
77    {
78        ASN1EncodableVector    v = new ASN1EncodableVector();
79
80        v.add(name);
81        v.add(certSerialNumber);
82
83        return new DERSequence(v);
84    }
85}
86