V1TBSCertificateGenerator.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 1 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.  *      }
  16.  * </pre>
  17.  *
  18.  */
  19. public class V1TBSCertificateGenerator
  20. {
  21.     DERTaggedObject         version = new DERTaggedObject(0, new DERInteger(0));
  22.     DERInteger              serialNumber;
  23.     AlgorithmIdentifier     signature;
  24.     X509Name                issuer;
  25.     Time                    startDate, endDate;
  26.     X509Name                subject;
  27.     SubjectPublicKeyInfo    subjectPublicKeyInfo;
  28.     public V1TBSCertificateGenerator()
  29.     {
  30.     }
  31.     public void setSerialNumber(
  32.         DERInteger  serialNumber)
  33.     {
  34.         this.serialNumber = serialNumber;
  35.     }
  36.     public void setSignature(
  37.         AlgorithmIdentifier    signature)
  38.     {
  39.         this.signature = signature;
  40.     }
  41.     public void setIssuer(
  42.         X509Name    issuer)
  43.     {
  44.         this.issuer = issuer;
  45.     }
  46.     public void setStartDate(
  47.         Time startDate)
  48.     {
  49.         this.startDate = startDate;
  50.     }
  51.     public void setStartDate(
  52.         DERUTCTime startDate)
  53.     {
  54.         this.startDate = new Time(startDate);
  55.     }
  56.     public void setEndDate(
  57.         Time endDate)
  58.     {
  59.         this.endDate = endDate;
  60.     }
  61.     public void setEndDate(
  62.         DERUTCTime endDate)
  63.     {
  64.         this.endDate = new Time(endDate);
  65.     }
  66.     public void setSubject(
  67.         X509Name    subject)
  68.     {
  69.         this.subject = subject;
  70.     }
  71.     public void setSubjectPublicKeyInfo(
  72.         SubjectPublicKeyInfo    pubKeyInfo)
  73.     {
  74.         this.subjectPublicKeyInfo = pubKeyInfo;
  75.     }
  76.     public TBSCertificateStructure generateTBSCertificate()
  77.     {
  78.         if ((serialNumber == null) || (signature == null)
  79.             || (issuer == null) || (startDate == null) || (endDate == null)
  80.             || (subject == null) || (subjectPublicKeyInfo == null))
  81.         {
  82.             throw new IllegalStateException("not all mandatory fields set in V1 TBScertificate generator");
  83.         }
  84.         ASN1EncodableVector  seq = new ASN1EncodableVector();
  85.         seq.add(version);
  86.         seq.add(serialNumber);
  87.         seq.add(signature);
  88.         seq.add(issuer);
  89.         //
  90.         // before and after dates
  91.         //
  92.         ASN1EncodableVector  validity = new ASN1EncodableVector();
  93.         validity.add(startDate);
  94.         validity.add(endDate);
  95.         seq.add(new DERSequence(validity));
  96.         seq.add(subject);
  97.         seq.add(subjectPublicKeyInfo);
  98.         return new TBSCertificateStructure(new DERSequence(seq));
  99.     }
  100. }