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 + -
显示快捷键?