⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x509ca.java

📁 JAVA做的J2EE下CA认证系统 基于EJB开发
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/************************************************************************* *                                                                       * *  EJBCA: The OpenSource Certificate Authority                          * *                                                                       * *  This software is free software; you can redistribute it and/or       * *  modify it under the terms of the GNU Lesser General Public           * *  License as published by the Free Software Foundation; either         * *  version 2.1 of the License, or any later version.                    * *                                                                       * *  See terms of license at gnu.org.                                     * *                                                                       * *************************************************************************/ package se.anatom.ejbca.ca.caadmin;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;import java.math.BigInteger;import java.security.KeyPair;import java.security.NoSuchProviderException;import java.security.PrivateKey;import java.security.PublicKey;import java.security.cert.CRL;import java.security.cert.CertStore;import java.security.cert.Certificate;import java.security.cert.CollectionCertStoreParameters;import java.security.cert.X509CRL;import java.security.cert.X509Certificate;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.StringTokenizer;import java.util.Vector;import org.apache.log4j.Logger;import org.bouncycastle.asn1.ASN1EncodableVector;import org.bouncycastle.asn1.ASN1InputStream;import org.bouncycastle.asn1.ASN1Sequence;import org.bouncycastle.asn1.DEREncodableVector;import org.bouncycastle.asn1.DERIA5String;import org.bouncycastle.asn1.DERObject;import org.bouncycastle.asn1.DERObjectIdentifier;import org.bouncycastle.asn1.DEROctetString;import org.bouncycastle.asn1.DERSequence;import org.bouncycastle.asn1.DERTaggedObject;import org.bouncycastle.asn1.DERUTF8String;import org.bouncycastle.asn1.x509.AuthorityInformationAccess;import org.bouncycastle.asn1.x509.AuthorityKeyIdentifier;import org.bouncycastle.asn1.x509.BasicConstraints;import org.bouncycastle.asn1.x509.CRLDistPoint;import org.bouncycastle.asn1.x509.CRLNumber;import org.bouncycastle.asn1.x509.DistributionPoint;import org.bouncycastle.asn1.x509.DistributionPointName;import org.bouncycastle.asn1.x509.ExtendedKeyUsage;import org.bouncycastle.asn1.x509.GeneralName;import org.bouncycastle.asn1.x509.GeneralNames;import org.bouncycastle.asn1.x509.PolicyInformation;import org.bouncycastle.asn1.x509.SubjectKeyIdentifier;import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;import org.bouncycastle.asn1.x509.X509Extensions;import org.bouncycastle.asn1.x509.X509Name;import org.bouncycastle.asn1.x509.X509ObjectIdentifiers;import org.bouncycastle.cms.CMSEnvelopedData;import org.bouncycastle.cms.CMSEnvelopedDataGenerator;import org.bouncycastle.cms.CMSProcessable;import org.bouncycastle.cms.CMSProcessableByteArray;import org.bouncycastle.cms.CMSSignedData;import org.bouncycastle.cms.CMSSignedDataGenerator;import org.bouncycastle.cms.RecipientInformation;import org.bouncycastle.cms.RecipientInformationStore;import org.bouncycastle.jce.X509KeyUsage;import org.bouncycastle.ocsp.BasicOCSPResp;import org.bouncycastle.ocsp.BasicOCSPRespGenerator;import org.bouncycastle.ocsp.OCSPException;import org.bouncycastle.util.encoders.Hex;import se.anatom.ejbca.SecConst;import se.anatom.ejbca.ca.caadmin.extendedcaservices.ExtendedCAServiceNotActiveException;import se.anatom.ejbca.ca.caadmin.extendedcaservices.ExtendedCAServiceRequest;import se.anatom.ejbca.ca.caadmin.extendedcaservices.ExtendedCAServiceRequestException;import se.anatom.ejbca.ca.caadmin.extendedcaservices.ExtendedCAServiceResponse;import se.anatom.ejbca.ca.caadmin.extendedcaservices.IllegalExtendedCAServiceRequestException;import se.anatom.ejbca.ca.caadmin.extendedcaservices.OCSPCAServiceRequest;import se.anatom.ejbca.ca.caadmin.extendedcaservices.OCSPCAServiceResponse;import se.anatom.ejbca.ca.crl.RevokedCertInfo;import se.anatom.ejbca.ca.exception.CATokenOfflineException;import se.anatom.ejbca.ca.exception.IllegalKeyStoreException;import se.anatom.ejbca.ca.exception.SignRequestSignatureException;import se.anatom.ejbca.ca.sign.SernoGenerator;import se.anatom.ejbca.ca.store.certificateprofiles.CertificateProfile;import se.anatom.ejbca.common.UserDataVO;import se.anatom.ejbca.util.CertTools;import se.anatom.ejbca.util.StringTools;/** * X509CA is a implementation of a CA and holds data specific for Certificate and CRL generation  * according to the X509 standard.  * * @version $Id: X509CA.java,v 1.41.2.4 2005/11/24 21:16:37 herrvendil Exp $ */public class X509CA extends CA implements Serializable {    private static Logger log = Logger.getLogger(X509CA.class);    // Default Values    public static final float LATEST_VERSION = 1;    private X509Name subjectx509name = null;        private byte[]  keyId = new byte[] { 1, 2, 3, 4, 5 };            // protected fields.    protected static final String POLICYID                       = "policyid";    protected static final String SUBJECTALTNAME                 = "subjectaltname";    protected static final String USEAUTHORITYKEYIDENTIFIER      = "useauthoritykeyidentifier";    protected static final String AUTHORITYKEYIDENTIFIERCRITICAL = "authoritykeyidentifiercritical";    protected static final String USECRLNUMBER                   = "usecrlnumber";    protected static final String CRLNUMBERCRITICAL              = "crlnumbercritical";    /** OID used for creating MS Templates */    protected static final String OID_MSTEMPLATE = "1.3.6.1.4.1.311.20.2";          // Public Methods    /** Creates a new instance of CA, this constuctor should be used when a new CA is created */    public X509CA(X509CAInfo cainfo) {      super(cainfo);              data.put(POLICYID, cainfo.getPolicyId());      data.put(SUBJECTALTNAME,  cainfo.getSubjectAltName());                  setUseAuthorityKeyIdentifier(cainfo.getUseAuthorityKeyIdentifier());      setAuthorityKeyIdentifierCritical(cainfo.getAuthorityKeyIdentifierCritical());       setUseCRLNumber(cainfo.getUseCRLNumber());      setCRLNumberCritical(cainfo.getCRLNumberCritical());      setFinishUser(cainfo.getFinishUser());            data.put(CA.CATYPE, new Integer(CAInfo.CATYPE_X509));      data.put(VERSION, new Float(LATEST_VERSION));          }       /** Constructor used when retrieving existing X509CA from database. */    public X509CA(HashMap data, CADataBean owner){      super(data, owner);    }    // Public Methods.    public String getPolicyId(){ return (String) data.get(POLICYID);}    public void setPolicyId(String policyid){ data.put(POLICYID, policyid);}        public String getSubjectAltName() { return (String) data.get(SUBJECTALTNAME);}        public boolean  getUseAuthorityKeyIdentifier(){      return ((Boolean)data.get(USEAUTHORITYKEYIDENTIFIER)).booleanValue();    }    public void setUseAuthorityKeyIdentifier(boolean useauthoritykeyidentifier) {      data.put(USEAUTHORITYKEYIDENTIFIER, new Boolean(useauthoritykeyidentifier));    }        public boolean  getAuthorityKeyIdentifierCritical(){      return ((Boolean)data.get(AUTHORITYKEYIDENTIFIERCRITICAL)).booleanValue();    }    public void setAuthorityKeyIdentifierCritical(boolean authoritykeyidentifiercritical) {      data.put(AUTHORITYKEYIDENTIFIERCRITICAL, new Boolean(authoritykeyidentifiercritical));    }    public boolean  getUseCRLNumber(){return ((Boolean)data.get(USECRLNUMBER)).booleanValue();}    public void setUseCRLNumber(boolean usecrlnumber) {data.put(USECRLNUMBER, new Boolean(usecrlnumber));}        public boolean  getCRLNumberCritical(){return ((Boolean)data.get(CRLNUMBERCRITICAL)).booleanValue();}    public void setCRLNumberCritical(boolean crlnumbercritical) {data.put(CRLNUMBERCRITICAL, new Boolean(crlnumbercritical));}            public void updateCA(CAInfo cainfo) throws Exception{      super.updateCA(cainfo);       X509CAInfo info = (X509CAInfo) cainfo;      setUseAuthorityKeyIdentifier(info.getUseAuthorityKeyIdentifier());      setAuthorityKeyIdentifierCritical(info.getAuthorityKeyIdentifierCritical());       setUseCRLNumber(info.getUseCRLNumber());      setCRLNumberCritical(info.getCRLNumberCritical());    }        public CAInfo getCAInfo() throws Exception{      ArrayList externalcaserviceinfos = new ArrayList();      Iterator iter = getExternalCAServiceTypes().iterator(); 	      while(iter.hasNext()){      	externalcaserviceinfos.add(this.getExtendedCAServiceInfo(((Integer) iter.next()).intValue()));  	      }    	                      return new X509CAInfo(getSubjectDN(), getName(), getStatus(), getSubjectAltName() ,getCertificateProfileId(),                      getValidity(), getExpireTime(), getCAType(), getSignedBy(), getCertificateChain(),                    getCAToken().getCATokenInfo(), getDescription(), getRevokationReason(), getRevokationDate(), getPolicyId(), getCRLPeriod(), getCRLPublishers(),                    getUseAuthorityKeyIdentifier(), getAuthorityKeyIdentifierCritical(),                    getUseCRLNumber(), getCRLNumberCritical(), getFinishUser(), externalcaserviceinfos);     }    public byte[] createPKCS7(Certificate cert, boolean includeChain) throws SignRequestSignatureException {        // First verify that we signed this certificate        try {            if (cert != null)                cert.verify(getCAToken().getPublicKey(SecConst.CAKEYPURPOSE_CERTSIGN), getCAToken().getProvider());        } catch (Exception e) {            throw new SignRequestSignatureException("Cannot verify certificate in createPKCS7(), did I sign this?");        }        Collection chain = getCertificateChain();        ArrayList certList = new ArrayList();        if (cert != null) {            certList.add(cert);        }         if (includeChain) {            certList.addAll(chain);        }        try {            CMSProcessable msg = new CMSProcessableByteArray("EJBCA".getBytes());            CertStore certs = CertStore.getInstance("Collection", new CollectionCertStoreParameters(certList), "BC");            CMSSignedDataGenerator gen = new CMSSignedDataGenerator();            gen.addSigner(getCAToken().getPrivateKey(SecConst.CAKEYPURPOSE_CERTSIGN), (X509Certificate)getCACertificate(), CMSSignedDataGenerator.DIGEST_SHA1);

⌨️ 快捷键说明

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