大佬教程收集整理的这篇文章主要介绍了groovy生成证书 X509CertificateObject,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
import java.nio.buffer; /** * @author TBear * */ import java.awt.TexturePaintContext.byte; import java.security.InvalidKeyException; import java.security.KeyPair; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.SignatureException; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; import java.security.cert.CertificateParsingException import java.security.cert.X509Certificate; import javax.security.auth.x500.X500Principal; import org.bouncycastle.asn1.ASN1EncodableVector; import org.bouncycastle.asn1.DERBitString import org.bouncycastle.asn1.DERInteger import org.bouncycastle.asn1.DERSequence import org.bouncycastle.asn1.DERUTctime import org.bouncycastle.asn1.x509.AlgorithmIdentifier import org.bouncycastle.asn1.x509.basicConsTraints import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; import org.bouncycastle.asn1.x509.V3TBSCertificateGenerator import org.bouncycastle.asn1.x509.X509CertificateStructure import org.bouncycastle.asn1.x509.X509Extensions; import org.bouncycastle.asn1.x509.X509ExtensionsGenerator; import org.bouncycastle.asn1.x509.X509Name import org.bouncycastle.jce.provider.bouncyCastleProvider import org.bouncycastle.jce.provider.X509CertificateObject import org.bouncycastle.x509.extension.SubjectKeyIdentifierStructure; import com.itrus.raapi.info.CerTinfo; public class Certservice{ public static void main(String[] args) { X509CertificateObject certificate = genSM2_Cert(); byte[] buffer = certificate.getEncoded(); bufferedoutputstream outputStream = new bufferedoutputstream(new FiLeoutputStream(new File('E:/abc.cer'))); outputStream.write buffer; outputStream.flush(); outputStream.close(); } //X509CertificateObject static X509CertificateObject genSM2_Cert() throws CertificateParsingException{ long currTime = new Date().getTime(); String issuerDN = "cn=ibm"; String subjectDN = "cn=ibm"; int vday = 10; //证书生成 V3TBSCertificateGenerator v3CertGen = new V3TBSCertificateGenerator(); //系列号 DERInteger serialnumber = new DERInteger(BigInteger.valueOf(currTimE)); v3CertGen.setserialnumber(serialnumber); //发行人 v3CertGen.setIssuer(new X509Name(issuerDN)); //开始时间和结束时间 v3CertGen.setStartDate(new DERUTctime(new Date(currTimE))); v3CertGen.setEndDate(new DERUTctime(new Date(currTime + vday*24*60*60*1000))); //主题 v3CertGen.setSubject(new X509Name(subjectDN)); //签名算法 AlgorithmIdentifier algSign = new AlgorithmIdentifier("1.2.156.197.1.501"); v3CertGen.setSignature(algSign); //公钥算法 AlgorithmIdentifier algKey = new AlgorithmIdentifier("1.2.156.197.1.301"); byte[] pubData = new byte[65]; pubData[0] = 0; for(byte i=1;i<pubData.length;i++){ pubData[i] = i; } //有公钥算法和签名算法生成公钥信息摘要 SubjectPublicKeyInfo pubKeyInfo = new SubjectPublicKeyInfo(algKey,pubData); v3CertGen.setSubjectPublicKeyInfo(pubKeyInfo); byte[] signInfo = new byte[69]; for(byte i=1;i<pubData.length;i++){ pubData[i] = i; } X509ExtensionsGenerator extenGen = new X509ExtensionsGenerator(); //extenGen.addExtension(paramDERObjectIdentifier,paramBoolean,paramArrayOfBytE); X509Extensions exten = extenGen.generate(); v3CertGen.setExtensions(exten); ASN1EncodableVector asn1encodablevector = new ASN1EncodableVector(); asn1encodablevector.add(v3CertGen.generateTBSCertificate()); asn1encodablevector.add(algSign); asn1encodablevector.add(new DERBitString(signInfo)); return new X509CertificateObject(new X509CertificateStructure(new DERSequence(asn1encodablevector))); } }
注意最终的输出流必须用bufferedoutputstream;其他的流写不出!
以上是大佬教程为你收集整理的groovy生成证书 X509CertificateObject全部内容,希望文章能够帮你解决groovy生成证书 X509CertificateObject所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。