1 /*
2  * @(#) $Id: TBSCertificate.java,v 1.3 2003/07/08 08:13:53 pankaj Exp $
3  *
4  * Copyright (c) 2002-03 by Pankaj Kumar (http://www.pankaj-k.net). 
5  * All rights reserved.
6  *
7  * The license governing the use of this file can be found in the 
8  * root directory of the containing software.
9  */
10package org.jstk.pki;
11
12import java.io.*;
13
14import org.jstk.asn1.*;
15import org.jstk.pem.*;
16import java.math.BigInteger;
17
18/*
19 * TBSCertificate ::= SEQUENCE {
20 *   version                [0] EXPLICIT Version DEFAULT v1,
21 *   serialNumber               INTEGER,
22 *   signature                  AlgorithmIdentifier,
23 *   issuer                     Name,
24 *   validity                   Validity,
25 *   subject                    Name,
26 *   subjectPublicKeyInfo       SubjectPublicKeyInfo
27 *   issuerUniqueIdentifier [1] IMPLICIT UniqueIdentifier OPTIONAL,
28 *   subjectUniqueIdentifier [2] IMPLICIT UniqueIdentifier OPTIONAL,
29 *   extensions             [3] EXPLICIT Extensions OPTIONAL
30 * }
31 */
32public class TBSCertificate extends ASN1Seq{
33    private Version version = new Version(CONTEXT, EXPLICIT, 0);
34    private ASN1Integer serialNumber = new ASN1Integer();
35    private AlgorithmIdentifier algorithm = new AlgorithmIdentifier();
36    private Name issuer = new Name();
37    private Validity validity = new Validity();
38    private Name subject = new Name();
39    private SubjectPublicKeyInfo publicKeyInfo = new SubjectPublicKeyInfo();
40    private ASN1BitString issuerUniqueID = new ASN1BitString(CONTEXT, IMPLICIT, 1);
41    private ASN1BitString subjectUniqueID = new ASN1BitString(CONTEXT, IMPLICIT, 2);
42    /*
43    private Extensions extensions = new Extensions(CONTEXT, EXPLICIT, 3);
44    */
45    private ASN1Explicit extensions = new ASN1Explicit(CONTEXT, EXPLICIT, 3);
46
47    public TBSCertificate(){
48        super();
49        issuerUniqueID.setOptional(true);
50        subjectUniqueID.setOptional(true);
51        extensions.setOptional(true);
52
53        add(version);
54        add(serialNumber);
55        add(algorithm);
56        add(issuer);
57        add(validity);
58        add(subject);
59        add(publicKeyInfo);
60        add(issuerUniqueID);
61        add(subjectUniqueID);
62        add(extensions);
63    }
64
65    public Version getVersion(){
66        return version;
67    }
68
69    public ASN1Integer getSerialNumber(){
70        return serialNumber;
71    }
72
73    public AlgorithmIdentifier getAlgorithm(){
74        return algorithm;
75    }
76
77    public Name getIssuer(){
78        return issuer;
79    }
80
81    public Validity getValidity(){
82        return validity;
83    }
84
85    public Name getSubject(){
86        return subject;
87    }
88
89    public SubjectPublicKeyInfo getSubjectPublicKeyInfo(){
90        return publicKeyInfo;
91    }
92
93    public ASN1Explicit getExtensions(){
94        return extensions;
95    }
96
97    public String toString(){
98        StringBuffer sb = new StringBuffer();
99        sb.append("TBSCertificate-SEQ(" + version.toString() + ", ");
00        sb.append(serialNumber.toString() + ", " + algorithm.toString());
01        sb.append(", " + issuer.toString() + ", " + validity.toString());
02        sb.append(", " + subject.toString() + ", " + publicKeyInfo.toString() +
03            extensions.toString() + ")");
04        return sb.toString();
05    }
06}
07
08