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