certificationrequestinfo.java

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

JAVA
128
字号
package org.bouncycastle.asn1.pkcs;import org.bouncycastle.asn1.*;import org.bouncycastle.asn1.x509.*;/** * PKCS10 * * <pre> *  CertificationRequestInfo ::= SEQUENCE { *   version             INTEGER { v1(0) } (v1,...), *   subject             Name, *   subjectPKInfo   SubjectPublicKeyInfo{{ PKInfoAlgorithms }}, *   attributes          [0] Attributes{{ CRIAttributes }} *  } * *  Attributes { ATTRIBUTE:IOSet } ::= SET OF Attribute{{ IOSet }} * *  Attribute { ATTRIBUTE:IOSet } ::= SEQUENCE { *    type    ATTRIBUTE.&id({IOSet}), *    values  SET SIZE(1..MAX) OF ATTRIBUTE.&Type({IOSet}{@type}) *  } * </pre> */public class CertificationRequestInfo    implements DEREncodable{    DERInteger              version = new DERInteger(0);    X509Name                subject;    SubjectPublicKeyInfo    subjectPKInfo;    DERConstructedSet       attributes = null;    boolean                 isexplicit = false;    public CertificationRequestInfo(        X509Name                subject,        SubjectPublicKeyInfo    pkInfo,        DERConstructedSet       attributes)    {        this.subject = subject;        this.subjectPKInfo = pkInfo;        this.attributes = attributes;    }    public CertificationRequestInfo(        DERConstructedSequence  seq)    {        version = (DERInteger)seq.getObjectAt(0);        if (seq.getObjectAt(1) instanceof X509Name)        {            subject = (X509Name)seq.getObjectAt(1);        }        else        {            subject = new X509Name((DERConstructedSequence)seq.getObjectAt(1));        }        if (seq.getObjectAt(2) instanceof SubjectPublicKeyInfo)        {            subjectPKInfo = (SubjectPublicKeyInfo)seq.getObjectAt(2);        }        else        {            subjectPKInfo = new SubjectPublicKeyInfo((DERConstructedSequence)seq.getObjectAt(2));        }        DERTaggedObject tagobj = (DERTaggedObject)seq.getObjectAt(3);        if (!tagobj.isEmpty())        {            DERConstructedSequence s = (DERConstructedSequence)tagobj.getObject();            attributes = new DERConstructedSet();            for (int i = 0; i != s.getSize(); i++)            {                attributes.addObject((DEREncodable)s.getObjectAt(i));            }        }        isexplicit = tagobj.isExplicit();    }    public DERInteger getVersion()    {        return version;    }    public X509Name getSubject()    {        return subject;    }    public SubjectPublicKeyInfo getSubjectPublicKeyInfo()    {        return subjectPKInfo;    }    public DERConstructedSet getAttributes()    {        return attributes;    }    public DERObject getDERObject()    {        if ((subject == null) || (version == null) || (subjectPKInfo == null))        {            throw new IllegalStateException("Not all mandatory fields set in CertificationRequestInfo generator.");        }        DERConstructedSequence  seq = new DERConstructedSequence();        seq.addObject(version);        seq.addObject(subject);        seq.addObject(subjectPKInfo);        if (attributes == null)        {            seq.addObject(new DERTaggedObject(false, 0));        }        else        {            seq.addObject(new DERTaggedObject(isexplicit, 0, attributes));        }        return seq;    }}

⌨️ 快捷键说明

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