V3TBSCertificateGenerator.java
上传用户:lior1029
上传日期:2013-05-07
资源大小:209k
文件大小:3k
源码类别:

CA认证

开发平台:

Java

  1. package org.bouncycastle.asn1.x509;
  2. import org.bouncycastle.asn1.*;
  3. import org.bouncycastle.asn1.pkcs.*;
  4. /**
  5.  * Generator for Version 3 TBSCertificateStructures.
  6.  * <pre>
  7.  * TBSCertificate ::= SEQUENCE {
  8.  *      version          [ 0 ]  Version DEFAULT v1(0),
  9.  *      serialNumber            CertificateSerialNumber,
  10.  *      signature               AlgorithmIdentifier,
  11.  *      issuer                  Name,
  12.  *      validity                Validity,
  13.  *      subject                 Name,
  14.  *      subjectPublicKeyInfo    SubjectPublicKeyInfo,
  15.  *      issuerUniqueID    [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL,
  16.  *      subjectUniqueID   [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL,
  17.  *      extensions        [ 3 ] Extensions OPTIONAL
  18.  *      }
  19.  * </pre>
  20.  *
  21.  */
  22. public class V3TBSCertificateGenerator
  23. {
  24.     DERTaggedObject         version = new DERTaggedObject(0, new DERInteger(2));
  25.     DERInteger              serialNumber;
  26.     AlgorithmIdentifier     signature;
  27.     X509Name                issuer;
  28.     Time                    startDate, endDate;
  29.     X509Name                subject;
  30.     SubjectPublicKeyInfo    subjectPublicKeyInfo;
  31.     X509Extensions          extensions;
  32.     public V3TBSCertificateGenerator()
  33.     {
  34.     }
  35.     public void setSerialNumber(
  36.         DERInteger  serialNumber)
  37.     {
  38.         this.serialNumber = serialNumber;
  39.     }
  40.     public void setSignature(
  41.         AlgorithmIdentifier    signature)
  42.     {
  43.         this.signature = signature;
  44.     }
  45.     public void setIssuer(
  46.         X509Name    issuer)
  47.     {
  48.         this.issuer = issuer;
  49.     }
  50.     public void setStartDate(
  51.         DERUTCTime startDate)
  52.     {
  53.         this.startDate = new Time(startDate);
  54.     }
  55.     public void setStartDate(
  56.         Time startDate)
  57.     {
  58.         this.startDate = startDate;
  59.     }
  60.     public void setEndDate(
  61.         DERUTCTime endDate)
  62.     {
  63.         this.endDate = new Time(endDate);
  64.     }
  65.     public void setEndDate(
  66.         Time endDate)
  67.     {
  68.         this.endDate = endDate;
  69.     }
  70.     public void setSubject(
  71.         X509Name    subject)
  72.     {
  73.         this.subject = subject;
  74.     }
  75.     public void setSubjectPublicKeyInfo(
  76.         SubjectPublicKeyInfo    pubKeyInfo)
  77.     {
  78.         this.subjectPublicKeyInfo = pubKeyInfo;
  79.     }
  80.     public void setExtensions(
  81.         X509Extensions    extensions)
  82.     {
  83.         this.extensions = extensions;
  84.     }
  85.     public TBSCertificateStructure generateTBSCertificate()
  86.     {
  87.         if ((serialNumber == null) || (signature == null)
  88.             || (issuer == null) || (startDate == null) || (endDate == null)
  89.             || (subject == null) || (subjectPublicKeyInfo == null))
  90.         {
  91.             throw new IllegalStateException("not all mandatory fields set in V3 TBScertificate generator");
  92.         }
  93.         ASN1EncodableVector  v = new ASN1EncodableVector();
  94.         v.add(version);
  95.         v.add(serialNumber);
  96.         v.add(signature);
  97.         v.add(issuer);
  98.         //
  99.         // before and after dates
  100.         //
  101.         ASN1EncodableVector  validity = new ASN1EncodableVector();
  102.         validity.add(startDate);
  103.         validity.add(endDate);
  104.         v.add(new DERSequence(validity));
  105.         v.add(subject);
  106.         v.add(subjectPublicKeyInfo);
  107.         if (extensions != null)
  108.         {
  109.             v.add(new DERTaggedObject(3, extensions));
  110.         }
  111.         return new TBSCertificateStructure(new DERSequence(v));
  112.     }
  113. }