v3tbscertificategenerator.java

来自「《移动Agent技术》一书的所有章节源代码。」· Java 代码 · 共 126 行

JAVA
126
字号
package org.bouncycastle.asn1.x509;import org.bouncycastle.asn1.*;import org.bouncycastle.asn1.pkcs.*;/** * Generator for Version 3 TBSCertificateStructures. * <pre> * TBSCertificate ::= SEQUENCE { *      version          [ 0 ]  Version DEFAULT v1(0), *      serialNumber            CertificateSerialNumber, *      signature               AlgorithmIdentifier, *      issuer                  Name, *      validity                Validity, *      subject                 Name, *      subjectPublicKeyInfo    SubjectPublicKeyInfo, *      issuerUniqueID    [ 1 ] IMPLICIT UniqueIdentifier OPTIONAL, *      subjectUniqueID   [ 2 ] IMPLICIT UniqueIdentifier OPTIONAL, *      extensions        [ 3 ] Extensions OPTIONAL *      } * </pre> * */public class V3TBSCertificateGenerator{    DERTaggedObject         version = new DERTaggedObject(0, new DERInteger(2));    DERInteger              serialNumber;    AlgorithmIdentifier     signature;    X509Name                issuer;    DERUTCTime              startDate, endDate;    X509Name                subject;    SubjectPublicKeyInfo    subjectPublicKeyInfo;    X509Extensions          extensions;    public V3TBSCertificateGenerator()    {    }    public void setSerialNumber(        DERInteger  serialNumber)    {        this.serialNumber = serialNumber;    }    public void setSignature(        AlgorithmIdentifier    signature)    {        this.signature = signature;    }    public void setIssuer(        X509Name    issuer)    {        this.issuer = issuer;    }    public void setStartDate(        DERUTCTime startDate)    {        this.startDate = startDate;    }    public void setEndDate(        DERUTCTime endDate)    {        this.endDate = endDate;    }    public void setSubject(        X509Name    subject)    {        this.subject = subject;    }    public void setSubjectPublicKeyInfo(        SubjectPublicKeyInfo    pubKeyInfo)    {        this.subjectPublicKeyInfo = pubKeyInfo;    }    public void setExtensions(        X509Extensions    extensions)    {        this.extensions = extensions;    }    public TBSCertificateStructure generateTBSCertificate()    {        if ((serialNumber == null) || (signature == null)            || (issuer == null) || (startDate == null) || (endDate == null)            || (subject == null) || (subjectPublicKeyInfo == null))        {            throw new IllegalStateException("not all mandatory fields set in V3 TBScertificate generator");        }        DERConstructedSequence  seq = new DERConstructedSequence();        seq.addObject(version);        seq.addObject(serialNumber);        seq.addObject(signature);        seq.addObject(issuer);        //        // before and after dates        //        DERConstructedSequence  validity = new DERConstructedSequence();        validity.addObject(startDate);        validity.addObject(endDate);        seq.addObject(validity);        seq.addObject(subject);        seq.addObject(subjectPublicKeyInfo);        if (extensions != null)        {            seq.addObject(new DERTaggedObject(3, extensions.getDERObject()));        }        return new TBSCertificateStructure(seq);    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?