📄 rsasignsessionbean.java
字号:
/************************************************************************* * * * 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.sign;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import java.security.NoSuchProviderException;import java.security.PublicKey;import java.security.SecureRandom;import java.security.cert.CRLException;import java.security.cert.Certificate;import java.security.cert.CertificateExpiredException;import java.security.cert.CertificateNotYetValidException;import java.security.cert.X509CRL;import java.security.cert.X509Certificate;import java.security.interfaces.RSAPublicKey;import java.util.Arrays;import java.util.Collection;import java.util.Iterator;import java.util.Vector;import javax.ejb.CreateException;import javax.ejb.EJBException;import javax.ejb.ObjectNotFoundException;import se.anatom.ejbca.BaseSessionBean;import se.anatom.ejbca.SecConst;import se.anatom.ejbca.ca.auth.IAuthenticationSessionLocal;import se.anatom.ejbca.ca.auth.IAuthenticationSessionLocalHome;import se.anatom.ejbca.ca.caadmin.CA;import se.anatom.ejbca.ca.caadmin.CADataLocal;import se.anatom.ejbca.ca.caadmin.CADataLocalHome;import se.anatom.ejbca.ca.caadmin.CAToken;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.exception.AuthLoginException;import se.anatom.ejbca.ca.exception.AuthStatusException;import se.anatom.ejbca.ca.exception.CADoesntExistsException;import se.anatom.ejbca.ca.exception.CATokenOfflineException;import se.anatom.ejbca.ca.exception.IllegalKeyException;import se.anatom.ejbca.ca.exception.IllegalKeyStoreException;import se.anatom.ejbca.ca.exception.SignRequestException;import se.anatom.ejbca.ca.exception.SignRequestSignatureException;import se.anatom.ejbca.ca.publisher.IPublisherSessionLocal;import se.anatom.ejbca.ca.publisher.IPublisherSessionLocalHome;import se.anatom.ejbca.ca.store.CertificateDataBean;import se.anatom.ejbca.ca.store.ICertificateStoreSessionLocal;import se.anatom.ejbca.ca.store.ICertificateStoreSessionLocalHome;import se.anatom.ejbca.ca.store.certificateprofiles.CertificateProfile;import se.anatom.ejbca.common.UserDataVO;import se.anatom.ejbca.log.Admin;import se.anatom.ejbca.log.ILogSessionLocal;import se.anatom.ejbca.log.ILogSessionLocalHome;import se.anatom.ejbca.log.LogEntry;import se.anatom.ejbca.protocol.FailInfo;import se.anatom.ejbca.protocol.IRequestMessage;import se.anatom.ejbca.protocol.IResponseMessage;import se.anatom.ejbca.protocol.ResponseStatus;import se.anatom.ejbca.util.Base64;import se.anatom.ejbca.util.CertTools;import se.anatom.ejbca.util.Hex;/** * Creates and signs certificates. * * @ejb.bean description="Session bean handling core CA function,signing certificates" * display-name="RSASignSessionSB" * name="RSASignSession" * jndi-name="RSASignSession" * local-jndi-name="SignSessionLocal" * view-type="both" * type="Stateless" * transaction-type="Container" * * @ejb.transaction type="Required" * * @ejb.permission role-name="InternalUser" * * @ejb.env-entry description="Used internally to keystores in database" * name="keyStorePass" * type="java.lang.String" * value="${ca.keystorepass}" * @ejb.env-entry description="Password for OCSP keystores" * name="OCSPKeyStorePass" * type="java.lang.String" * value="${ca.ocspkeystorepass}" * * @ejb.env-entry description="Name of PRNG algorithm used for random source - refer to Appendix A in the * Java Cryptography Architecture API Specification And Reference for * information about standard PRNG algorithm names" * name="randomAlgorithm" * type="java.lang.String" * value="SHA1PRNG" * * @ejb.ejb-external-ref description="The CA entity bean" * view-type="local" * ejb-name="CADataLocal" * type="Entity" * home="se.anatom.ejbca.ca.caadmin.ICADataLocalHome" * business="se.anatom.ejbca.ca.caadmin.ICADataLocal" * link="CAData" * * @ejb.ejb-external-ref description="The log session bean" * view-type="local" * ejb-name="LogSessionLocal" * type="Session" * home="se.anatom.ejbca.log.ILogSessionLocalHome" * business="se.anatom.ejbca.log.ILogSessionLocal" * link="LogSession" * * @ejb.ejb-external-ref description="The Certificate store used to store and fetch certificates" * view-type="local" * ejb-name="CertificateStoreSessionLocal" * type="Session" * home="se.anatom.ejbca.ca.store.ICertificateStoreSessionLocalHome" * business="se.anatom.ejbca.ca.store.ICertificateStoreSessionLocal" * link="CertificateStoreSession" * * @ejb.ejb-external-ref description="The Authentication session used to authenticate users when issuing certificates. * Alter this to enable a custom made authentication session implementing the * IAuthenticationSessionLocal interface" * view-type="local" * ejb-name="AuthenticationSessionLocal" * type="Session" * home="se.anatom.ejbca.ca.auth.IAuthenticationSessionLocalHome" * business="se.anatom.ejbca.ca.auth.IAuthenticationSessionLocal" * link="AuthenticationSession" * * @ejb.ejb-external-ref description="Publishers are configured to store certificates and CRLs in additional places * from the main database. Publishers runs as local beans" * view-type="local" * ejb-name="PublisherSessionLocal" * type="Session" * home="se.anatom.ejbca.ca.publisher.IPublisherSessionLocalHome" * business="se.anatom.ejbca.ca.publisher.IPublisherSessionLocal" * link="PublisherSession" * * @ejb.home * extends="javax.ejb.EJBHome" * remote-class="se.anatom.ejbca.ca.sign.ISignSessionHome" * local-extends="javax.ejb.EJBLocalHome" * local-class="se.anatom.ejbca.ca.sign.ISignSessionLocalHome" * * @ejb.interface * extends="javax.ejb.EJBObject" * remote-class="se.anatom.ejbca.ca.sign.ISignSessionRemote" * local-extends="javax.ejb.EJBLocalObject" * local-class="se.anatom.ejbca.ca.sign.ISignSessionLocal" */public class RSASignSessionBean extends BaseSessionBean { /** * Local interfacte to ca admin store */ private CADataLocalHome cadatahome; /** * Home interface to certificate store */ private ICertificateStoreSessionLocalHome storeHome = null; /* Home interface to Authentication session */ private IAuthenticationSessionLocalHome authHome = null; /* Home interface to Publisher session */ private IPublisherSessionLocalHome publishHome = null; /** * The local interface of the log session bean */ private ILogSessionLocal logsession; /** * Source of good random data */ SecureRandom randomSource = null; /** * Default create for SessionBean without any creation Arguments. * * @throws CreateException if bean instance can't be created * @ejb.create-method */ public void ejbCreate() throws CreateException { debug(">ejbCreate()"); try { // Install BouncyCastle provider CertTools.installBCProvider(); // get home interfaces to other session beans used storeHome = (ICertificateStoreSessionLocalHome) getLocator().getLocalHome(ICertificateStoreSessionLocalHome.COMP_NAME); authHome = (IAuthenticationSessionLocalHome) getLocator().getLocalHome(IAuthenticationSessionLocalHome.COMP_NAME); cadatahome = (CADataLocalHome) getLocator().getLocalHome(CADataLocalHome.COMP_NAME); publishHome = (IPublisherSessionLocalHome) getLocator().getLocalHome(IPublisherSessionLocalHome.COMP_NAME); // Get a decent source of random data String randomAlgorithm = getLocator().getString("java:comp/env/randomAlgorithm"); randomSource = SecureRandom.getInstance(randomAlgorithm); SernoGenerator.setAlgorithm(randomAlgorithm); } catch (Exception e) { debug("Caught exception in ejbCreate(): ", e); throw new EJBException(e); } debug("<ejbCreate()");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -