summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cmscore/security/JssSubsystem.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/cmscore/security/JssSubsystem.java')
-rw-r--r--base/common/src/com/netscape/cmscore/security/JssSubsystem.java2174
1 files changed, 0 insertions, 2174 deletions
diff --git a/base/common/src/com/netscape/cmscore/security/JssSubsystem.java b/base/common/src/com/netscape/cmscore/security/JssSubsystem.java
deleted file mode 100644
index e3b744220..000000000
--- a/base/common/src/com/netscape/cmscore/security/JssSubsystem.java
+++ /dev/null
@@ -1,2174 +0,0 @@
-// --- BEGIN COPYRIGHT BLOCK ---
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; version 2 of the License.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// (C) 2007 Red Hat, Inc.
-// All rights reserved.
-// --- END COPYRIGHT BLOCK ---
-package com.netscape.cmscore.security;
-
-import java.io.ByteArrayOutputStream;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.math.BigInteger;
-import java.net.SocketException;
-import java.security.InvalidAlgorithmParameterException;
-import java.security.InvalidKeyException;
-import java.security.InvalidParameterException;
-import java.security.KeyPair;
-import java.security.NoSuchAlgorithmException;
-import java.security.NoSuchProviderException;
-import java.security.Principal;
-import java.security.PublicKey;
-import java.security.SignatureException;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.CertificateException;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Locale;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import netscape.ldap.util.DN;
-import netscape.security.x509.AlgIdDSA;
-import netscape.security.x509.AlgorithmId;
-import netscape.security.x509.BasicConstraintsExtension;
-import netscape.security.x509.CertificateExtensions;
-import netscape.security.x509.X500Name;
-import netscape.security.x509.X509CertImpl;
-import netscape.security.x509.X509CertInfo;
-
-import org.mozilla.jss.CryptoManager;
-import org.mozilla.jss.CryptoManager.NicknameConflictException;
-import org.mozilla.jss.CryptoManager.NotInitializedException;
-import org.mozilla.jss.CryptoManager.UserCertConflictException;
-import org.mozilla.jss.NoSuchTokenException;
-import org.mozilla.jss.asn1.ASN1Util;
-import org.mozilla.jss.asn1.InvalidBERException;
-import org.mozilla.jss.asn1.SET;
-import org.mozilla.jss.crypto.AlreadyInitializedException;
-import org.mozilla.jss.crypto.CryptoStore;
-import org.mozilla.jss.crypto.CryptoToken;
-import org.mozilla.jss.crypto.InternalCertificate;
-import org.mozilla.jss.crypto.KeyPairAlgorithm;
-import org.mozilla.jss.crypto.NoSuchItemOnTokenException;
-import org.mozilla.jss.crypto.ObjectNotFoundException;
-import org.mozilla.jss.crypto.PQGParamGenException;
-import org.mozilla.jss.crypto.PQGParams;
-import org.mozilla.jss.crypto.PrivateKey;
-import org.mozilla.jss.crypto.SignatureAlgorithm;
-import org.mozilla.jss.crypto.TokenCertificate;
-import org.mozilla.jss.crypto.TokenException;
-import org.mozilla.jss.crypto.X509Certificate;
-import org.mozilla.jss.pkcs11.PK11SecureRandom;
-import org.mozilla.jss.pkcs7.ContentInfo;
-import org.mozilla.jss.pkcs7.SignedData;
-import org.mozilla.jss.pkix.cert.Certificate;
-import org.mozilla.jss.ssl.SSLServerSocket;
-import org.mozilla.jss.ssl.SSLSocket;
-import org.mozilla.jss.util.IncorrectPasswordException;
-import org.mozilla.jss.util.Password;
-import org.mozilla.jss.util.PasswordCallback;
-
-import com.netscape.certsrv.apps.CMS;
-import com.netscape.certsrv.base.EBaseException;
-import com.netscape.certsrv.base.IConfigStore;
-import com.netscape.certsrv.base.ISubsystem;
-import com.netscape.certsrv.common.Constants;
-import com.netscape.certsrv.common.NameValuePairs;
-import com.netscape.certsrv.logging.ILogger;
-import com.netscape.certsrv.security.ICryptoSubsystem;
-import com.netscape.certsrv.security.KeyCertData;
-import com.netscape.cmscore.cert.CertPrettyPrint;
-import com.netscape.cmscore.cert.CertUtils;
-import com.netscape.cmscore.util.Debug;
-import com.netscape.cmsutil.crypto.CryptoUtil;
-import com.netscape.cmsutil.util.Utils;
-
-/**
- * Subsystem for initializing JSS>
- * <P>
- *
- * @version $Revision$ $Date$
- */
-public final class JssSubsystem implements ICryptoSubsystem {
- public static final String ID = "jss";
-
- private static final String CONFIG_DIR = "configDir";
- private static final String PROP_ENABLE = "enable";
- private static final String PASSWORD_ALIAS = "password";
- private static final String mId = ID;
- protected IConfigStore mConfig = null;
- private boolean mInited = false;
- private ILogger mLogger = null;
- private CryptoManager mCryptoManager = null;
-
- protected PasswordCallback mPWCB = null;
-
- private static JssSubsystem mInstance = new JssSubsystem();
- private Hashtable<String, X509Certificate[]> mNicknameMapCertsTable = new Hashtable<String, X509Certificate[]>();
- private Hashtable<String, X509Certificate[]> mNicknameMapUserCertsTable =
- new Hashtable<String, X509Certificate[]>();
-
- private FileInputStream devRandomInputStream = null;
-
- // This date format is to format the date string of the certificate in such a way as
- // May 01, 1999 01:55:55.
- private static SimpleDateFormat mFormatter = new SimpleDateFormat("MMMMM dd, yyyy HH:mm:ss");
-
- // SSL related variables.
-
- private IConfigStore mSSLConfig = null;
-
- private static final String PROP_SSL = "ssl";
- private static final String PROP_SSL_CIPHERPREF = Constants.PR_CIPHER_PREF;
- private static final String PROP_SSL_ECTYPE = Constants.PR_ECTYPE;
-
- private static Hashtable<String, Integer> mCipherNames = new Hashtable<String, Integer>();
-
- /* default sslv2 and sslv3 cipher suites(all), set if no prefs in config.*/
- private static final String DEFAULT_CIPHERPREF =
- "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA," +
- "TLS_RSA_WITH_AES_128_CBC_SHA," +
- "TLS_RSA_WITH_AES_256_CBC_SHA," +
- "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA," +
- "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA," +
- // "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA," +
- // "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA," +
- // "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA," +
- "TLS_DHE_DSS_WITH_AES_128_CBC_SHA," +
- "TLS_DHE_DSS_WITH_AES_256_CBC_SHA," +
- "TLS_DHE_RSA_WITH_AES_128_CBC_SHA," +
- "TLS_DHE_RSA_WITH_AES_256_CBC_SHA";
-
- /* list of all ciphers JSS supports */
- private static final int mJSSCipherSuites[] = {
- SSLSocket.SSL2_RC4_128_WITH_MD5,
- SSLSocket.SSL2_RC4_128_EXPORT40_WITH_MD5,
- SSLSocket.SSL2_RC2_128_CBC_WITH_MD5,
- SSLSocket.SSL2_RC2_128_CBC_EXPORT40_WITH_MD5,
- SSLSocket.SSL2_DES_64_CBC_WITH_MD5,
- SSLSocket.SSL2_DES_192_EDE3_CBC_WITH_MD5,
- SSLSocket.SSL3_RSA_EXPORT_WITH_RC4_40_MD5,
- SSLSocket.SSL3_RSA_WITH_RC4_128_MD5,
- SSLSocket.SSL3_RSA_EXPORT_WITH_RC2_CBC_40_MD5,
- SSLSocket.SSL3_RSA_WITH_DES_CBC_SHA,
- SSLSocket.SSL3_RSA_WITH_3DES_EDE_CBC_SHA,
- SSLSocket.SSL3_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA,
- SSLSocket.SSL3_FORTEZZA_DMS_WITH_RC4_128_SHA,
- SSLSocket.TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA,
- SSLSocket.TLS_RSA_EXPORT1024_WITH_RC4_56_SHA,
- };
-
- static {
-
- /* set ssl cipher string names. */
- /* disallowing SSL2 ciphers to be turned on
- mCipherNames.put(Constants.PR_SSL2_RC4_128_WITH_MD5,
- Integer.valueOf(SSLSocket.SSL2_RC4_128_WITH_MD5));
- mCipherNames.put(Constants.PR_SSL2_RC4_128_EXPORT40_WITH_MD5,
- Integer.valueOf(SSLSocket.SSL2_RC4_128_EXPORT40_WITH_MD5));
- mCipherNames.put(Constants.PR_SSL2_RC2_128_CBC_WITH_MD5,
- Integer.valueOf(SSLSocket.SSL2_RC2_128_CBC_WITH_MD5));
- mCipherNames.put(Constants.PR_SSL2_RC2_128_CBC_EXPORT40_WITH_MD5,
- Integer.valueOf(SSLSocket.SSL2_RC2_128_CBC_EXPORT40_WITH_MD5));
- mCipherNames.put(Constants.PR_SSL2_DES_64_CBC_WITH_MD5,
- Integer.valueOf(SSLSocket.SSL2_DES_64_CBC_WITH_MD5));
- mCipherNames.put(Constants.PR_SSL2_DES_192_EDE3_CBC_WITH_MD5,
- Integer.valueOf(SSLSocket.SSL2_DES_192_EDE3_CBC_WITH_MD5));
- */
- mCipherNames.put(Constants.PR_SSL3_RSA_WITH_NULL_MD5,
- Integer.valueOf(SSLSocket.SSL3_RSA_WITH_NULL_MD5));
- mCipherNames.put(Constants.PR_SSL3_RSA_EXPORT_WITH_RC4_40_MD5,
- Integer.valueOf(SSLSocket.SSL3_RSA_EXPORT_WITH_RC4_40_MD5));
- mCipherNames.put(Constants.PR_SSL3_RSA_WITH_RC4_128_MD5,
- Integer.valueOf(SSLSocket.SSL3_RSA_WITH_RC4_128_MD5));
- mCipherNames.put(Constants.PR_SSL3_RSA_EXPORT_WITH_RC2_CBC_40_MD5,
- Integer.valueOf(SSLSocket.SSL3_RSA_EXPORT_WITH_RC2_CBC_40_MD5));
- mCipherNames.put(Constants.PR_SSL3_RSA_WITH_DES_CBC_SHA,
- Integer.valueOf(SSLSocket.SSL3_RSA_WITH_DES_CBC_SHA));
- mCipherNames.put(Constants.PR_SSL3_RSA_WITH_3DES_EDE_CBC_SHA,
- Integer.valueOf(SSLSocket.SSL3_RSA_WITH_3DES_EDE_CBC_SHA));
- mCipherNames.put(Constants.PR_SSL3_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA,
- Integer.valueOf(SSLSocket.SSL3_FORTEZZA_DMS_WITH_FORTEZZA_CBC_SHA));
- mCipherNames.put(Constants.PR_SSL3_FORTEZZA_DMS_WITH_RC4_128_SHA,
- Integer.valueOf(SSLSocket.SSL3_FORTEZZA_DMS_WITH_RC4_128_SHA));
- mCipherNames.put(Constants.PR_SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA,
- Integer.valueOf(SSLSocket.SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA));
- mCipherNames.put(Constants.PR_SSL_RSA_FIPS_WITH_DES_CBC_SHA,
- Integer.valueOf(SSLSocket.SSL_RSA_FIPS_WITH_DES_CBC_SHA));
- mCipherNames.put(Constants.PR_TLS_RSA_EXPORT1024_WITH_RC4_56_SHA,
- Integer.valueOf(SSLSocket.TLS_RSA_EXPORT1024_WITH_RC4_56_SHA));
- mCipherNames.put(Constants.PR_TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA,
- Integer.valueOf(SSLSocket.TLS_RSA_EXPORT1024_WITH_DES_CBC_SHA));
- }
-
- public static JssSubsystem getInstance() {
- return mInstance;
- }
-
- /**
- * Constructs a Security service subsystem.
- */
- private JssSubsystem() {
- }
-
- public String getId() {
- return mId;
- }
-
- public void setId(String id) throws EBaseException {
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_OPERATION"));
-
- }
-
- // Add entropy to the 'default' RNG token
- public void addEntropy(int bits)
- throws org.mozilla.jss.util.NotImplementedException,
- IOException,
- TokenException {
- int read = 0;
- int bytes = (7 + bits) / 8;
- byte[] b = new byte[bytes];
- if (devRandomInputStream == null) {
- throw new IOException(CMS.getLogMessage("CMSCORE_SECURITY_NO_ENTROPY_STREAM"));
- }
- do {
- int c = devRandomInputStream.read(b, read, bytes - read);
- read += c;
- } while (read < bytes);
-
- CMS.debug("JssSubsystem adding " + bits + " bits (" + bytes + " bytes) of entropy to default RNG token");
- CMS.debug(b);
- PK11SecureRandom sr = new PK11SecureRandom();
- sr.setSeed(b);
- }
-
- /**
- * Initializes the Jss security subsystem.
- * <P>
- */
- public void init(ISubsystem owner, IConfigStore config)
- throws EBaseException {
- mLogger = CMS.getLogger();
-
- if (mInited) {
- // This used to throw an exeception (e.g. - on Solaris).
- // If JSS is already initialized simply return.
- CMS.debug("JssSubsystem already inited.. returning.");
- return;
- }
-
- mConfig = config;
-
- // If disabled, just return
- boolean enabled = config.getBoolean(PROP_ENABLE, true);
-
- if (!enabled)
- return;
-
- try {
- devRandomInputStream = new FileInputStream("/dev/urandom");
- } catch (IOException ioe) {
- // XXX - add new exception
- }
-
- // get hardcoded password (for debugging.
- String pw;
-
- if ((pw = config.getString(PASSWORD_ALIAS, null)) != null) {
- // hardcoded password in config file
- mPWCB = new Password(pw.toCharArray());
- CMS.debug("JssSubsystem init() got password from hardcoded in config");
- }
-
- String certDir;
-
- certDir = config.getString(CONFIG_DIR, null);
-
- CryptoManager.InitializationValues vals = new CryptoManager.InitializationValues(certDir, "", "", "secmod.db");
-
- vals.removeSunProvider = false;
- vals.installJSSProvider = true;
- try {
- CryptoManager.initialize(vals);
- } catch (AlreadyInitializedException e) {
- // do nothing
- } catch (Exception e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
-
- try {
- mCryptoManager = CryptoManager.getInstance();
- initSSL();
- } catch (CryptoManager.NotInitializedException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
-
- mInited = true;
- }
-
- public String getCipherVersion() throws EBaseException {
- return "cipherdomestic";
- }
-
- public String getCipherPreferences() throws EBaseException {
- String cipherpref = "";
-
- if (mSSLConfig != null) {
- cipherpref = mSSLConfig.getString(PROP_SSL_CIPHERPREF, "");
- if (cipherpref.equals("")) {
- cipherpref = DEFAULT_CIPHERPREF;
- }
- }
- return cipherpref;
- }
-
- public String getECType(String certType) throws EBaseException {
- if (mSSLConfig != null) {
- // for SSL server, check the value of jss.ssl.sslserver.ectype
- return mSSLConfig.getString(certType + "." + PROP_SSL_ECTYPE, "ECDHE");
- } else {
- return "ECDHE";
- }
- }
-
- public String isCipherFortezza() throws EBaseException {
- // we always display fortezza suites.
- // too much work to display tokens/certs corresponding to the
- // suites.
- return "true";
- }
-
- void installProvider() {
- int position = java.security.Security.insertProviderAt(
- new com.netscape.cmscore.security.Provider(),
- 1);
-
- if (position == -1) {
- Debug.trace("Unable to install CMS provider");
- log(ILogger.LL_FAILURE,
- CMS.getLogMessage("CMSCORE_SECURITY_INSTALL_PROVIDER"));
- }
- }
-
- public void setCipherPreferences(String cipherPrefs)
- throws EBaseException {
- if (mSSLConfig != null) {
- if (cipherPrefs.equals(""))
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_NO_EMPTY_CIPHERPREFS"));
- mSSLConfig.putString(Constants.PR_CIPHER_PREF, cipherPrefs);
- }
- }
-
- /**
- * Initialize SSL cipher suites from config file.
- *
- */
- private void initSSL() throws EBaseException {
- // JSS will AND what is set and what is allowed by export policy
- // so we can set what is requested.
-
- try {
- SSLServerSocket.configServerSessionIDCache(10, 0, 0, null);
- } catch (SocketException e) {
- }
-
- mSSLConfig = mConfig.getSubStore(PROP_SSL);
- String sslCiphers = null;
-
- if (mSSLConfig != null)
- sslCiphers = getCipherPreferences();
- if (Debug.ON)
- Debug.trace("configured ssl cipher prefs is " + sslCiphers);
-
- // first, disable all ciphers, since JSS defaults to all-enabled
- for (int i = mJSSCipherSuites.length - 1; i >= 0; i--) {
- try {
- SSLSocket.setCipherPreferenceDefault(mJSSCipherSuites[i],
- false);
- } catch (SocketException e) {
- }
- }
-
- // the sslCiphers string will always contain something
-
- if (sslCiphers != null && sslCiphers.length() != 0) {
- StringTokenizer ciphers = new StringTokenizer(sslCiphers, ",");
-
- if (!ciphers.hasMoreTokens()) {
- log(ILogger.LL_FAILURE,
- CMS.getLogMessage("CMSCORE_SECURITY_INVALID_CIPHER", sslCiphers));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_PROPERTY", PROP_SSL_CIPHERPREF));
- }
- while (ciphers.hasMoreTokens()) {
- String cipher = ciphers.nextToken();
- Integer sslcipher = mCipherNames.get(cipher);
-
- if (sslcipher != null) {
- String msg = "setting ssl cipher " + cipher;
-
- CMS.debug("JSSSubsystem: initSSL(): " + msg);
- log(ILogger.LL_INFO, msg);
- if (Debug.ON)
- Debug.trace(msg);
- try {
- SSLSocket.setCipherPreferenceDefault(
- sslcipher.intValue(), true);
- } catch (SocketException e) {
- }
- }
- }
- }
-
- }
-
- /**
- * Retrieves a configuration store of this subsystem.
- * <P>
- */
- public IConfigStore getConfigStore() {
- return mConfig;
- }
-
- /**
- * Starts up this service.
- */
- public void startup() throws EBaseException {
- }
-
- /**
- * Shutdowns this subsystem.
- * <P>
- */
- public void shutdown() {
- try {
- // After talking to NSS teamm, we should not call close databases
- // which will call NSS_Shutdown. Web Server will call NSS_Shutdown
- boolean isClosing = mConfig.getBoolean("closeDatabases", false);
- if (isClosing) {
- JSSDatabaseCloser closer = new JSSDatabaseCloser();
- closer.closeDatabases();
- }
- } catch (Exception e) {
- }
- }
-
- public void log(int level, String msg) {
- mLogger.log(ILogger.EV_SYSTEM, ILogger.S_OTHER, level, "JSS " + msg);
- }
-
- public PasswordCallback getPWCB() {
- return mPWCB;
- }
-
- public String getInternalTokenName() throws EBaseException {
- CryptoToken c = mCryptoManager.getInternalKeyStorageToken();
- String name = "";
-
- try {
- name = c.getName();
- } catch (TokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
-
- return name;
- }
-
- public String getTokenList() throws EBaseException {
- StringBuffer tokenList = new StringBuffer();
-
- @SuppressWarnings("unchecked")
- Enumeration<CryptoToken> tokens = mCryptoManager.getExternalTokens();
- int num = 0;
-
- try {
- while (tokens.hasMoreElements()) {
- CryptoToken c = tokens.nextElement();
-
- // skip builtin object token
- if (c.getName() != null && c.getName().equals("Builtin Object Token")) {
- continue;
- }
-
- if (num++ != 0)
- tokenList.append(",");
- tokenList.append(c.getName());
- }
- } catch (TokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
-
- if (tokenList.length()==0)
- return Constants.PR_INTERNAL_TOKEN;
- else
- return tokenList.append("," + Constants.PR_INTERNAL_TOKEN).toString();
- }
-
- public boolean isTokenLoggedIn(String name) throws EBaseException {
- try {
- if (name.equals(Constants.PR_INTERNAL_TOKEN_NAME))
- name = Constants.PR_FULL_INTERNAL_TOKEN_NAME;
- CryptoToken ctoken = mCryptoManager.getTokenByName(name);
-
- return ctoken.isLoggedIn();
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TOKEN_LOGGED_IN", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_ERROR"));
- } catch (NoSuchTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TOKEN_LOGGED_IN", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- }
- }
-
- public void loggedInToken(String tokenName, String pwd) throws EBaseException {
- try {
- CryptoToken ctoken = mCryptoManager.getTokenByName(tokenName);
- Password clk = new Password(pwd.toCharArray());
-
- ctoken.login(clk);
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TOKEN_LOGGED_IN", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_ERROR"));
- } catch (IncorrectPasswordException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TOKEN_LOGGED_IN", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_LOGIN_FAILED"));
- } catch (NoSuchTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TOKEN_LOGGED_IN", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- }
- }
-
- public String getCertSubjectName(String tokenname, String nickname)
- throws EBaseException {
- try {
- return KeyCertUtil.getCertSubjectName(tokenname, nickname);
- } catch (NoSuchTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
- }
-
- public String getAllCerts() throws EBaseException {
- StringBuffer certNames = new StringBuffer();
-
- try {
- @SuppressWarnings("unchecked")
- Enumeration<CryptoToken> enums = mCryptoManager.getAllTokens();
-
- while (enums.hasMoreElements()) {
- CryptoToken token = enums.nextElement();
- CryptoStore store = token.getCryptoStore();
- X509Certificate[] list = store.getCertificates();
-
- for (int i = 0; i < list.length; i++) {
- String nickname = list[i].getNickname();
-
- if (certNames.length() < 1) {
- certNames.append(nickname);
- } else {
- certNames.append("," + nickname);
- }
- }
- }
- } catch (TokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
-
- return certNames.toString();
- }
-
- public String getCertListWithoutTokenName(String name) throws EBaseException {
-
- CryptoToken c = null;
- StringBuffer certNames = new StringBuffer();
-
- try {
- if (name.equals(Constants.PR_INTERNAL_TOKEN)) {
- c = mCryptoManager.getInternalKeyStorageToken();
- } else {
- c = mCryptoManager.getTokenByName(name);
- }
-
- if (c != null) {
- CryptoStore store = c.getCryptoStore();
- X509Certificate[] list = store.getCertificates();
-
- if (list == null)
- return "";
-
- for (int i = 0; i < list.length; i++) {
- String nickname = list[i].getNickname();
- int index = nickname.indexOf(":");
-
- if (index != -1)
- nickname = nickname.substring(index + 1);
- if (i != 0)
- certNames.append(",");
- certNames.append(nickname);
- }
- return certNames.toString();
- } else
- return "";
-
- } catch (TokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- } catch (NoSuchTokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
- }
-
- public String getCertList(String name) throws EBaseException {
-
- CryptoToken c = null;
- StringBuffer certNames = new StringBuffer();
-
- try {
- if (name.equals(Constants.PR_INTERNAL_TOKEN)) {
- c = mCryptoManager.getInternalKeyStorageToken();
- } else {
- c = mCryptoManager.getTokenByName(name);
- }
-
- if (c != null) {
- CryptoStore store = c.getCryptoStore();
- X509Certificate[] list = store.getCertificates();
-
- if (list == null)
- return "";
-
- for (int i = 0; i < list.length; i++) {
- String nickname = list[i].getNickname();
-
- if (i != 0)
- certNames.append(",");
- certNames.append(nickname);
- }
-
- return certNames.toString();
- } else
- return "";
-
- } catch (TokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- } catch (NoSuchTokenException e) {
- String[] params = { mId, e.toString() };
- EBaseException ex = new EBaseException(
- CMS.getUserMessage("CMS_BASE_CREATE_SERVICE_FAILED", params));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GENERAL_ERROR", ex.toString()));
- throw ex;
- }
- }
-
- public AlgorithmId getAlgorithmId(String algname, IConfigStore store)
- throws EBaseException {
- try {
- if (algname.equals("DSA")) {
- byte[] p = store.getByteArray("ca.dsaP", null);
- byte[] q = store.getByteArray("ca.dsaQ", null);
- byte[] g = store.getByteArray("ca.dsaG", null);
-
- if (p != null && q != null && g != null) {
- BigInteger P = new BigInteger(p);
- BigInteger Q = new BigInteger(q);
- BigInteger G = new BigInteger(g);
-
- return new AlgIdDSA(P, Q, G);
- }
- }
- return AlgorithmId.get(algname);
- } catch (NoSuchAlgorithmException e) {
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ALG_NOT_SUPPORTED", ""));
- }
- }
-
- public String getSignatureAlgorithm(String nickname) throws EBaseException {
- try {
- X509Certificate cert = CryptoManager.getInstance().findCertByNickname(nickname);
- X509CertImpl impl = new X509CertImpl(cert.getEncoded());
-
- return impl.getSigAlgName();
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_ALG", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (ObjectNotFoundException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_ALG", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_ALG", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_ALG", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
- }
-
- public KeyPair getKeyPair(String nickname) throws EBaseException {
- try {
- X509Certificate cert = CryptoManager.getInstance().findCertByNickname(nickname);
- PrivateKey priKey = CryptoManager.getInstance().findPrivKeyByCert(cert);
- PublicKey publicKey = cert.getPublicKey();
-
- return new KeyPair(publicKey, priKey);
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, "Key Pair Error " + e);
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (ObjectNotFoundException e) {
- log(ILogger.LL_FAILURE, "Key Pair Error " + e);
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, "Key Pair Error " + e);
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- }
- }
-
- public KeyPair getKeyPair(String tokenName, String alg,
- int keySize) throws EBaseException {
- return getKeyPair(tokenName, alg, keySize, null);
- }
-
- public KeyPair getKeyPair(String tokenName, String alg,
- int keySize, PQGParams pqg) throws EBaseException {
-
- String t = tokenName;
- if (tokenName.equals(Constants.PR_INTERNAL_TOKEN))
- t = Constants.PR_FULL_INTERNAL_TOKEN_NAME;
- CryptoToken token = null;
-
- try {
- token = mCryptoManager.getTokenByName(t);
- } catch (NoSuchTokenException e) {
- log(ILogger.LL_FAILURE, "Generate Key Pair Error " + e);
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", tokenName));
- }
-
- KeyPairAlgorithm kpAlg = null;
-
- if (alg.equals("RSA"))
- kpAlg = KeyPairAlgorithm.RSA;
- else {
- kpAlg = KeyPairAlgorithm.DSA;
- }
-
- try {
- KeyPair kp = KeyCertUtil.generateKeyPair(token, kpAlg, keySize, pqg);
- return kp;
- } catch (InvalidParameterException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_KEY_PAIR", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_KEYSIZE_PARAMS",
- "" + keySize));
- } catch (PQGParamGenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_KEY_PAIR", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_PQG_GEN_FAILED"));
- } catch (NoSuchAlgorithmException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_KEY_PAIR", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ALG_NOT_SUPPORTED",
- kpAlg.toString()));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_KEY_PAIR", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_KEY_GEN_FAILED"));
- } catch (InvalidAlgorithmParameterException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_KEY_PAIR", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ALG_NOT_SUPPORTED", "DSA"));
- }
- }
-
- public void isX500DN(String dn) throws EBaseException {
- try {
- new X500Name(dn); // check for errors
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_X500_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_X500_NAME", dn));
- }
- }
-
- public String getCertRequest(String subjectName, KeyPair kp)
- throws EBaseException {
- try {
- netscape.security.pkcs.PKCS10 pkcs = KeyCertUtil.getCertRequest(subjectName, kp);
- ByteArrayOutputStream bs = new ByteArrayOutputStream();
- PrintStream ps = new PrintStream(bs);
- pkcs.print(ps);
- return bs.toString();
- } catch (NoSuchAlgorithmException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_REQUEST", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ALG_NOT_SUPPORTED", ""));
- } catch (NoSuchProviderException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_REQUEST", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_PROVIDER_NOT_SUPPORTED"));
- } catch (InvalidKeyException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_REQUEST", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_KEY"));
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_REQUEST", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_REQ_FAILED"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_REQUEST", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_CERT", e.toString()));
- } catch (SignatureException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_REQUEST", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_INVALID_SIGNATURE"));
- }
- }
-
- public void importCert(String b64E, String nickname, String certType)
- throws EBaseException {
- try {
- KeyCertUtil.importCert(b64E, nickname, certType);
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_DECODE_CERT_FAILED"));
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- String eString = e.toString();
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- if (eString.contains("Failed to find certificate that was just imported")) {
- throw new EBaseException(eString);
- } else {
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- }
- } catch (UserCertConflictException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_USERCERT_CONFLICT"));
- } catch (NicknameConflictException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_NICKNAME_CONFLICT"));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- }
- }
-
- public KeyPair getKeyPair(KeyCertData properties) throws EBaseException {
- String tokenname = Constants.PR_INTERNAL_TOKEN_NAME;
- String keyType = "RSA";
- int keyLength = 512;
-
- String tmp = (String) properties.get(Constants.PR_TOKEN_NAME);
-
- if ((tmp != null) &&
- (!tmp.equals(Constants.PR_INTERNAL_TOKEN)))
- tokenname = tmp;
- tmp = (String) properties.get(Constants.PR_KEY_TYPE);
- if (tmp != null)
- keyType = tmp;
- tmp = (String) properties.get(Constants.PR_KEY_LENGTH);
- if (tmp != null)
- keyLength = Integer.parseInt(tmp);
-
- KeyPair pair = getKeyPair(tokenname, keyType, keyLength);
-
- return pair;
- }
-
- public KeyPair getECCKeyPair(KeyCertData properties) throws EBaseException {
- String token = Constants.PR_INTERNAL_TOKEN_NAME;
- String keyCurve = "nistp512";
- String certType = null;
- KeyPair pair = null;
-
- String tmp = (String) properties.get(Constants.PR_TOKEN_NAME);
- if (tmp != null)
- token = tmp;
-
- tmp = (String) properties.get(Constants.PR_KEY_CURVENAME);
- if (tmp != null)
- keyCurve = tmp;
-
- certType = (String) properties.get(Constants.RS_ID);
-
- pair = getECCKeyPair(token, keyCurve, certType);
-
- return pair;
- }
-
- public KeyPair getECCKeyPair(String token, String keyCurve, String certType) throws EBaseException {
- KeyPair pair = null;
-
- if ((token == null) || (token.equals("")))
- token = Constants.PR_INTERNAL_TOKEN_NAME;
-
- if ((keyCurve == null) || (keyCurve.equals("")))
- keyCurve = "nistp512";
-
- String ectype = getECType(certType);
-
- // ECDHE needs "SIGN" but no "DERIVE"
- org.mozilla.jss.crypto.KeyPairGeneratorSpi.Usage usages_mask[] = {
- org.mozilla.jss.crypto.KeyPairGeneratorSpi.Usage.DERIVE
- };
-
- // ECDH needs "DERIVE" but no any kind of "SIGN"
- org.mozilla.jss.crypto.KeyPairGeneratorSpi.Usage ECDH_usages_mask[] = {
- org.mozilla.jss.crypto.KeyPairGeneratorSpi.Usage.SIGN,
- org.mozilla.jss.crypto.KeyPairGeneratorSpi.Usage.SIGN_RECOVER,
- };
-
- try {
- if (ectype.equals("ECDHE"))
- pair = CryptoUtil.generateECCKeyPair(token, keyCurve, null, usages_mask);
- else
- pair = CryptoUtil.generateECCKeyPair(token, keyCurve, null, ECDH_usages_mask);
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ECC_KEY", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (NoSuchTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ECC_KEY", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NoSuchAlgorithmException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ECC_KEY", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_NO_SUCH_ALGORITHM", e.toString()));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ECC_KEY", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- }
-
- return pair;
- }
-
- public void importCert(X509CertImpl signedCert, String nickname,
- String certType) throws EBaseException {
-
- try {
- KeyCertUtil.importCert(signedCert, nickname, certType);
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateEncodingException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ENCODE_CERT_FAILED"));
- } catch (UserCertConflictException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_USERCERT_CONFLICT"));
- } catch (NicknameConflictException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_NICKNAME_CONFLICT"));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IMPORT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ENCODE_CERT_FAILED"));
- }
- }
-
- public NameValuePairs getCertInfo(String b64E) throws EBaseException {
- try {
- byte[] b = KeyCertUtil.convertB64EToByteArray(b64E);
- X509CertImpl impl = new X509CertImpl(b);
- NameValuePairs results = new NameValuePairs();
-
- results.put(Constants.PR_CERT_SUBJECT_NAME, impl.getSubjectDN().getName());
- results.put(Constants.PR_ISSUER_NAME, impl.getIssuerDN().getName());
- results.put(Constants.PR_SERIAL_NUMBER, impl.getSerialNumber().toString());
- results.put(Constants.PR_BEFORE_VALIDDATE, impl.getNotBefore().toString());
- results.put(Constants.PR_AFTER_VALIDDATE, impl.getNotAfter().toString());
-
- // fingerprint is using MD5 hash
-
- return results;
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_INFO", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_DECODE_CERT_FAILED"));
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_CERT_INFO", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_DECODE_CERT_FAILED"));
- }
- }
-
- public void deleteUserCert(String nickname, String serialno, String issuername)
- throws EBaseException {
- try {
- X509Certificate cert = getCertificate(nickname, serialno, issuername);
- if (cert instanceof TokenCertificate) {
- TokenCertificate tcert = (TokenCertificate) cert;
-
- CMS.debug("*** deleting this token cert");
- tcert.getOwningToken().getCryptoStore().deleteCert(tcert);
- CMS.debug("*** finish deleting this token cert");
- } else {
- CryptoToken token = CryptoManager.getInstance().getInternalKeyStorageToken();
- CryptoStore store = token.getCryptoStore();
-
- CMS.debug("*** deleting this interna cert");
- store.deleteCert(cert);
- CMS.debug("*** removing this interna cert");
- }
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- }
- }
-
- public void deleteRootCert(String nickname, String serialno,
- String issuername) throws EBaseException {
- int index = nickname.indexOf(":");
- String tokenname = nickname.substring(0, index);
- if (tokenname.equals(Constants.PR_INTERNAL_TOKEN_NAME)) {
- nickname = nickname.substring(index + 1);
- }
- try {
- if (mNicknameMapCertsTable != null) {
- X509Certificate[] certs = mNicknameMapCertsTable.get(nickname);
-
- if (certs == null) {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CA_CERT", e.toString()));
- throw e;
- } else {
- for (int i = 0; i < certs.length; i++) {
- X509Certificate cert = certs[i];
- X509CertImpl impl = new X509CertImpl(cert.getEncoded());
- String num = impl.getSerialNumber().toString();
- String issuer = impl.getIssuerDN().toString();
- CMS.debug("*** num " + num);
- CMS.debug("*** issuer " + issuer);
- if (num.equals(serialno) && issuername.equals(issuer)) {
- CMS.debug("*** removing root cert");
- if (cert instanceof TokenCertificate) {
- TokenCertificate tcert = (TokenCertificate) cert;
-
- CMS.debug("*** deleting this token cert");
- tcert.getOwningToken().getCryptoStore().deleteCert(tcert);
- CMS.debug("*** finish deleting this token cert");
- } else {
- CryptoToken token = CryptoManager.getInstance().getInternalKeyStorageToken();
- CryptoStore store = token.getCryptoStore();
-
- CMS.debug("*** deleting this interna cert");
- store.deleteCert(cert);
- CMS.debug("*** removing this interna cert");
- }
- mNicknameMapCertsTable.remove(nickname);
- break;
- }
- }
- }
- }
-
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public NameValuePairs getRootCerts() throws EBaseException {
- NameValuePairs nvps = new NameValuePairs();
- try {
- @SuppressWarnings("unchecked")
- Enumeration<CryptoToken> enums = mCryptoManager.getAllTokens();
- if (mNicknameMapCertsTable != null) {
- mNicknameMapCertsTable.clear();
- } else {
- CMS.debug("JssSubsystem::getRootCerts() - mNicknameMapCertsTable is null");
- throw new EBaseException("JssSubsystem::getRootCerts() - mNicknameMapCertsTable is null");
- }
-
- // a temp hashtable with vectors
- Hashtable<String, Vector<X509Certificate>> vecTable = new Hashtable<String, Vector<X509Certificate>>();
-
- while (enums.hasMoreElements()) {
- CryptoToken token = enums.nextElement();
- String tokenName = token.getName();
-
- CryptoStore store = token.getCryptoStore();
- X509Certificate[] list = store.getCertificates();
-
- for (int i = 0; i < list.length; i++) {
- try {
- @SuppressWarnings("unused")
- PrivateKey key = CryptoManager.getInstance().findPrivKeyByCert(list[i]); // check for errors
- Debug.trace("JssSubsystem getRootCerts: find private key "
- + list[i].getNickname());
- } catch (ObjectNotFoundException e) {
- String nickname = list[i].getNickname();
- if (tokenName.equals(Constants.PR_INTERNAL_TOKEN_NAME)) {
- nickname = Constants.PR_INTERNAL_TOKEN_NAME + ":" + nickname;
- }
- X509CertImpl impl = null;
-
- try {
- Vector<X509Certificate> v;
- if (vecTable.containsKey(nickname) == true) {
- v = vecTable.get(nickname);
- } else {
- v = new Vector<X509Certificate>();
- }
- v.addElement(list[i]);
- vecTable.put(nickname, v);
- impl = new X509CertImpl(list[i].getEncoded());
- } catch (CertificateException ex) {
- // skip bad certificate
- CMS.debug("bad certificate - " + nickname);
- continue;
- }
- String serialno = impl.getSerialNumber().toString();
- String issuer = impl.getIssuerDN().toString();
- nvps.put(nickname + "," + serialno, issuer);
- Debug.trace("getRootCerts: nickname=" + nickname + ", serialno=" +
- serialno + ", issuer=" + issuer);
- continue;
- } catch (CryptoManager.NotInitializedException e) {
- continue;
- }
- }
- // convert hashtable of vectors to hashtable of arrays
- Enumeration<String> elms = vecTable.keys();
-
- while (elms.hasMoreElements()) {
- String key = elms.nextElement();
- Vector<X509Certificate> v = vecTable.get(key);
- X509Certificate[] a = new X509Certificate[v.size()];
-
- v.copyInto(a);
- mNicknameMapCertsTable.put(key, a);
- }
- }
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ALL_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
-
- return nvps;
-
- }
-
- public NameValuePairs getUserCerts() throws EBaseException {
- NameValuePairs nvps = new NameValuePairs();
- try {
- @SuppressWarnings("unchecked")
- Enumeration<CryptoToken> enums = mCryptoManager.getAllTokens();
-
- while (enums.hasMoreElements()) {
- CryptoToken token = enums.nextElement();
- String tokenName = token.getName();
-
- CryptoStore store = token.getCryptoStore();
- X509Certificate[] list = store.getCertificates();
-
- for (int i = 0; i < list.length; i++) {
- try {
- @SuppressWarnings("unused")
- PrivateKey key =
- CryptoManager.getInstance().findPrivKeyByCert(list[i]); // check for errors
- String nickname = list[i].getNickname();
- if (tokenName.equals(Constants.PR_INTERNAL_TOKEN_NAME) ||
- tokenName.equals(Constants.PR_FULL_INTERNAL_TOKEN_NAME)) {
- nickname = Constants.PR_INTERNAL_TOKEN_NAME + ":" + nickname;
- }
- X509CertImpl impl = null;
-
- try {
- impl = new X509CertImpl(list[i].getEncoded());
- } catch (CertificateException e) {
- // skip bad certificate
- CMS.debug("bad certificate - " + nickname);
- continue;
- }
- String serialno = impl.getSerialNumber().toString();
- String issuer = impl.getIssuerDN().toString();
- nvps.put(nickname + "," + serialno, issuer);
- Debug.trace("getUserCerts: nickname=" + nickname + ", serialno=" +
- serialno + ", issuer=" + issuer);
- } catch (ObjectNotFoundException e) {
- Debug.trace("JssSubsystem getUserCerts: cant find private key "
- + list[i].getNickname());
- continue;
- } catch (CryptoManager.NotInitializedException e) {
- continue;
- }
- }
- }
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ALL_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
-
- return nvps;
-
- }
-
- /*
- * get all certificates on all tokens for Certificate Database Management
- */
- public NameValuePairs getAllCertsManage() throws EBaseException {
-
- /*
- * first get all CA certs (internal only),
- * then all user certs (both internal and external)
- */
-
- NameValuePairs pairs = getCACerts();
-
- if (mNicknameMapUserCertsTable != null) {
- mNicknameMapUserCertsTable.clear();
- } else {
- CMS.debug("JssSubsystem:: getAllCertsManage() : mNicknameMapCertsTable is null");
- throw new EBaseException("JssSubsystem:: getAllCertsManage() : mNicknameMapCertsTable is null");
- }
-
- try {
- @SuppressWarnings("unchecked")
- Enumeration<CryptoToken> enums = mCryptoManager.getAllTokens();
-
- while (enums.hasMoreElements()) {
- CryptoToken token = enums.nextElement();
-
- CryptoStore store = token.getCryptoStore();
- X509Certificate[] list = store.getCertificates();
-
- for (int i = 0; i < list.length; i++) {
- String nickname = list[i].getNickname();
- X509Certificate[] certificates =
- CryptoManager.getInstance().findCertsByNickname(nickname);
-
- mNicknameMapUserCertsTable.put(nickname, certificates);
-
- X509CertImpl impl = null;
-
- try {
- impl = new X509CertImpl(list[i].getEncoded());
- } catch (CertificateException e) {
- // skip bad certificate
- CMS.debug("bad certificate - " + nickname);
- continue;
- }
- Date date = impl.getNotAfter();
- String dateStr = mFormatter.format(date);
- String vvalue = pairs.get(nickname);
-
- /* always user cert here*/
- String certValue = dateStr + "," + "u";
-
- if (vvalue == null)
- pairs.put(nickname, certValue);
- else {
- if (vvalue.endsWith(",u")) {
- pairs.put(nickname, vvalue + ";" + certValue);
- }
- }
-
- }
- } /* while */
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ALL_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- // } catch (CertificateException e) {
- // log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ALL_CERT", e.toString()));
- // throw new EBaseException(BaseResources.CERT_ERROR);
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_ALL_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
-
- return pairs;
- }
-
- public NameValuePairs getCACerts() throws EBaseException {
- NameValuePairs pairs = new NameValuePairs();
-
- //InternalCertificate[] certs;
- X509Certificate[] certs;
-
- try {
- certs = CryptoManager.getInstance().getCACerts();
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_CA_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- }
-
- if (mNicknameMapCertsTable == null) {
- CMS.debug("JssSubsystem::getCACerts() - " + "mNicknameMapCertsTable is null!");
- throw new EBaseException("JssSubsystem::getCACerts() - mNicknameMapCertsTable is null");
- } else {
- mNicknameMapCertsTable.clear();
- }
-
- // a temp hashtable with vectors
- Hashtable<String, Vector<X509Certificate>> vecTable = new Hashtable<String, Vector<X509Certificate>>();
-
- for (int i = 0; i < certs.length; i++) {
- String nickname = certs[i].getNickname();
-
- /* build a table of our own */
- Vector<X509Certificate> v;
-
- if (vecTable.containsKey(nickname) == true) {
- v = vecTable.get(nickname);
- } else {
- v = new Vector<X509Certificate>();
- }
- v.addElement(certs[i]);
- vecTable.put(nickname, v);
- }
-
- // convert hashtable of vectors to hashtable of arrays
- Enumeration<String> elms = vecTable.keys();
-
- while (elms.hasMoreElements()) {
- String key = elms.nextElement();
- Vector<X509Certificate> v = vecTable.get(key);
- X509Certificate[] a = new X509Certificate[v.size()];
-
- v.copyInto(a);
- mNicknameMapCertsTable.put(key, a);
- }
-
- Enumeration<String> keys = mNicknameMapCertsTable.keys();
-
- while (keys.hasMoreElements()) {
- String nickname = keys.nextElement();
- X509Certificate[] value = mNicknameMapCertsTable.get(nickname);
-
- for (int i = 0; i < value.length; i++) {
- InternalCertificate icert = null;
-
- if (value[i] instanceof InternalCertificate)
- icert = (InternalCertificate) value[i];
- else {
- Debug.trace("cert is not an InternalCertificate");
- Debug.trace("nickname: " + nickname + " index " + i);
- Debug.trace("cert: " + value[i]);
- continue;
- }
-
- int flag = icert.getSSLTrust();
- String trust = "U";
-
- if ((InternalCertificate.TRUSTED_CLIENT_CA & flag) == InternalCertificate.TRUSTED_CLIENT_CA)
- trust = "T";
- X509CertImpl impl = null;
-
- try {
- impl = new X509CertImpl(icert.getEncoded());
- Date date = impl.getNotAfter();
- String dateStr = mFormatter.format(date);
- String vvalue = pairs.get(nickname);
- String certValue = dateStr + "," + trust;
-
- if (vvalue == null)
- pairs.put(nickname, certValue);
- else {
- pairs.put(nickname, vvalue + ";" + certValue);
- }
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE,
- CMS.getLogMessage("CMSCORE_SECURITY_GET_CA_CERT_FOR", nickname, e.toString()));
- // allow it to continue with other certs even if one blows
- // up
- // throw new EBaseException(BaseResources.CERT_ERROR);
- }
- }
- }
- return pairs;
- }
-
- public void trustCert(String nickname, String date, String trust) throws
- EBaseException {
- try {
- if (mNicknameMapCertsTable != null) {
- X509Certificate[] certs = mNicknameMapCertsTable.get(nickname);
-
- if (certs == null) {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TRUST_CERT", e.toString()));
- throw e;
- } else {
- for (int i = 0; i < certs.length; i++) {
- X509Certificate cert = certs[i];
- X509CertImpl certImpl = new X509CertImpl(cert.getEncoded());
- Date notAfter = certImpl.getNotAfter();
- Date qualifier = mFormatter.parse(date);
-
- if (notAfter.equals(qualifier)) {
- if (cert instanceof InternalCertificate) {
- if (trust.equals("Trust")) {
- int trustflag = InternalCertificate.TRUSTED_CA |
- InternalCertificate.TRUSTED_CLIENT_CA |
- InternalCertificate.VALID_CA;
-
- ((InternalCertificate) cert).setSSLTrust(trustflag);
- } else
- ((InternalCertificate) cert).setSSLTrust(InternalCertificate.VALID_CA);
- break;
- } else {
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
- }
- }
- }
- }
- } catch (ParseException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TRUST_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_TRUST_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- /**
- * Delete the CA certificate from the perm database.
- *
- * @param nickname The nickname of the CA certificate.
- * @param notAfterTime The notAfter of the certificate. It is possible to get multiple
- * certificates under the same nickname. If one of the certificates match the notAfterTime,
- * then the certificate will get deleted. The format of the notAfterTime has to be
- * in "MMMMM dd, yyyy HH:mm:ss" format.
- */
- public void deleteCACert(String nickname, String notAfterTime) throws EBaseException {
- try {
- if (mNicknameMapCertsTable != null) {
- X509Certificate[] certs = mNicknameMapCertsTable.get(nickname);
-
- if (certs == null) {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CA_CERT", e.toString()));
- throw e;
- } else {
- for (int i = 0; i < certs.length; i++) {
- X509Certificate cert = certs[i];
- X509CertImpl certImpl = new X509CertImpl(cert.getEncoded());
- Date notAfter = certImpl.getNotAfter();
- Date qualifier = mFormatter.parse(notAfterTime);
-
- if (notAfter.equals(qualifier)) {
- if (cert instanceof TokenCertificate) {
- TokenCertificate tcert = (TokenCertificate) cert;
-
- tcert.getOwningToken().getCryptoStore().deleteCert(tcert);
- } else {
- CryptoToken token = CryptoManager.getInstance().getInternalKeyStorageToken();
- CryptoStore store = token.getCryptoStore();
-
- store.deleteCert(cert);
- }
- mNicknameMapCertsTable.remove(nickname);
- break;
- }
- }
- }
- }
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- } catch (ParseException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- /**
- * Delete any certificate from the any token.
- *
- * @param nickname The nickname of the certificate.
- * @param notAfterTime The notAfter of the certificate. It is possible to get multiple
- * certificates under the same nickname. If one of the certificates match the notAfterTime,
- * then the certificate will get deleted. The format of the notAfterTime has to be
- * in "MMMMM dd, yyyy HH:mm:ss" format.
- */
- public void deleteCert(String nickname, String notAfterTime) throws EBaseException {
- boolean isUserCert = false;
- X509Certificate[] certs = null;
-
- try {
- if (mNicknameMapCertsTable != null) {
- certs = mNicknameMapCertsTable.get(nickname);
- }
-
- if (certs == null) {
- if (mNicknameMapUserCertsTable != null) {
- certs = mNicknameMapUserCertsTable.get(nickname);
- if (certs != null) {
- CMS.debug("in mNicknameMapUserCertsTable, isUserCert is true");
- isUserCert = true;
- }
-
- } else
- CMS.debug("mNicknameMapUserCertsTable is null");
- }
-
- if (certs == null) {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw e;
- } else {
-
- for (int i = 0; i < certs.length; i++) {
- X509Certificate cert = certs[i];
- X509CertImpl certImpl = new X509CertImpl(cert.getEncoded());
- Date notAfter = certImpl.getNotAfter();
- Date qualifier = mFormatter.parse(notAfterTime);
-
- if (notAfter.equals(qualifier)) {
- if (cert instanceof TokenCertificate) {
- TokenCertificate tcert = (TokenCertificate) cert;
-
- tcert.getOwningToken().getCryptoStore().deleteCert(tcert);
- } else {
- CryptoToken token = CryptoManager.getInstance().getInternalKeyStorageToken();
- CryptoStore store = token.getCryptoStore();
-
- store.deleteCert(cert);
- }
- if (isUserCert == true) {
- mNicknameMapUserCertsTable.remove(nickname);
- } else {
- mNicknameMapCertsTable.remove(nickname);
- }
- break;
- }
- }
- }
-
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- } catch (ParseException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public void deleteTokenCertificate(String nickname, String pathname) throws EBaseException {
- try {
- X509Certificate cert = CryptoManager.getInstance().findCertByNickname(nickname);
- Principal principal = cert.getSubjectDN();
- DN dn = new DN(principal.getName());
- BigInteger serialno = cert.getSerialNumber();
- String suffix = "." + System.currentTimeMillis();
- String b64E = Utils.base64encode(cert.getEncoded());
- PrintStream stream = new PrintStream(new FileOutputStream(pathname + suffix));
-
- stream.println("-----BEGIN CERTIFICATE-----");
- stream.print(b64E);
- stream.println("-----END CERTIFICATE-----");
- stream.close();
- if (cert instanceof TokenCertificate) {
- TokenCertificate tcert = (TokenCertificate) cert;
-
- tcert.getOwningToken().getCryptoStore().deleteCert(tcert);
- } else
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_NOT_TOKEN_CERT"));
-
- int index = nickname.indexOf(":");
-
- // the deleted certificate is on the hardware token. We should delete the same one from
- // the internal token.
- if (index > 0) {
- CryptoToken cToken = CryptoManager.getInstance().getInternalKeyStorageToken();
- CryptoStore store = cToken.getCryptoStore();
- X509Certificate[] allcerts = CryptoManager.getInstance().getCACerts();
-
- for (int i = 0; i < allcerts.length; i++) {
- try {
- X509CertImpl certImpl = new X509CertImpl(allcerts[i].getEncoded());
- Principal certPrincipal = certImpl.getSubjectDN();
- DN certdn = new DN(certPrincipal.getName());
- BigInteger certSerialNo = certImpl.getSerialNumber();
-
- if (dn.equals(certdn) && certSerialNo.compareTo(serialno) == 0) {
- store.deleteCert(allcerts[i]);
- break;
- }
- } catch (Exception ee) {
- Debug.trace("JssSubsystem:deleteTokenCertificate: " + ee.toString());
- }
- }
- }
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NoSuchItemOnTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (ObjectNotFoundException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_ITEM_NOT_FOUND_ON_TOKEN"));
- } catch (CertificateEncodingException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_DELETE_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public String getSubjectDN(String nickname) throws EBaseException {
- try {
- X509Certificate cert = CryptoManager.getInstance().findCertByNickname(nickname);
- X509CertImpl impl = new X509CertImpl(cert.getEncoded());
-
- return impl.getSubjectDN().getName();
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (ObjectNotFoundException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_SUBJECT_NAME", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public void setRootCertTrust(String nickname, String serialno,
- String issuerName, String trust) throws EBaseException {
-
- X509Certificate cert = getCertificate(nickname, serialno, issuerName);
- if (cert instanceof InternalCertificate) {
- if (trust.equals("trust")) {
- int trustflag = InternalCertificate.TRUSTED_CA |
- InternalCertificate.TRUSTED_CLIENT_CA |
- InternalCertificate.VALID_CA;
-
- ((InternalCertificate) cert).setSSLTrust(trustflag);
- } else {
- ((InternalCertificate) cert).setSSLTrust(InternalCertificate.VALID_CA);
- }
- }
- }
-
- public X509Certificate getCertificate(String nickname, String serialno,
- String issuerName) throws EBaseException {
-
- int index = nickname.indexOf(":");
- String tokenname = nickname.substring(0, index);
- if (tokenname.equals(Constants.PR_INTERNAL_TOKEN_NAME)) {
- nickname = nickname.substring(index + 1);
- }
- try {
- X509Certificate[] certs = CryptoManager.getInstance().findCertsByNickname(nickname);
-
- X509CertImpl impl = null;
- int i = 0;
- if (certs != null && certs.length > 0) {
- for (; i < certs.length; i++) {
- impl = new X509CertImpl(certs[i].getEncoded());
- if (impl.getIssuerDN().toString().equals(issuerName) &&
- impl.getSerialNumber().toString().equals(serialno))
- return certs[i];
- }
- } else {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw e;
- }
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
-
- return null;
- }
-
- public String getRootCertTrustBit(String nickname, String serialno,
- String issuerName) throws EBaseException {
- int index = nickname.indexOf(":");
- String tokenname = nickname.substring(0, index);
- if (tokenname.equals(Constants.PR_INTERNAL_TOKEN_NAME)) {
- nickname = nickname.substring(index + 1);
- }
- try {
- X509Certificate[] certs = CryptoManager.getInstance().findCertsByNickname(nickname);
-
- X509CertImpl impl = null;
- int i = 0;
- if (certs != null && certs.length > 0) {
- for (; i < certs.length; i++) {
- impl = new X509CertImpl(certs[i].getEncoded());
- if (impl.getIssuerDN().toString().equals(issuerName) &&
- impl.getSerialNumber().toString().equals(serialno))
- break;
- }
- } else {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw e;
- }
-
- String trust = "U";
- if (certs[i] instanceof InternalCertificate) {
- InternalCertificate icert = (InternalCertificate) certs[i];
- int flag = icert.getSSLTrust();
- if ((InternalCertificate.TRUSTED_CLIENT_CA & flag) == InternalCertificate.TRUSTED_CLIENT_CA)
- trust = "T";
- } else
- trust = "N/A";
- return trust;
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public String getCertPrettyPrint(String nickname, String serialno,
- String issuerName, Locale locale) throws EBaseException {
- int index = nickname.indexOf(":");
- String tokenname = nickname.substring(0, index);
- if (tokenname.equals(Constants.PR_INTERNAL_TOKEN_NAME)) {
- nickname = nickname.substring(index + 1);
- }
- try {
- X509Certificate[] certs = CryptoManager.getInstance().findCertsByNickname(nickname);
-
- X509CertImpl impl = null;
- if (certs != null && certs.length > 0) {
- for (int i = 0; i < certs.length; i++) {
- impl = new X509CertImpl(certs[i].getEncoded());
- if (impl.getIssuerDN().toString().equals(issuerName) &&
- impl.getSerialNumber().toString().equals(serialno))
- break;
- }
- } else {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw e;
- }
- CertPrettyPrint print = null;
-
- if (impl != null)
- print = new CertPrettyPrint(impl);
-
- if (print != null)
- return print.toString(locale);
- else
- return null;
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public String getCertPrettyPrintAndFingerPrint(String nickname, String serialno,
- String issuerName, Locale locale) throws EBaseException {
- int index = nickname.indexOf(":");
- String tokenname = nickname.substring(0, index);
- if (tokenname.equals(Constants.PR_INTERNAL_TOKEN_NAME)) {
- nickname = nickname.substring(index + 1);
- }
- try {
- X509Certificate[] certs = CryptoManager.getInstance().findCertsByNickname(nickname);
-
- X509CertImpl impl = null;
- if (certs != null && certs.length > 0) {
- for (int i = 0; i < certs.length; i++) {
- impl = new X509CertImpl(certs[i].getEncoded());
- if (impl.getIssuerDN().toString().equals(issuerName) &&
- impl.getSerialNumber().toString().equals(serialno))
- break;
- }
- } else {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw e;
- }
- CertPrettyPrint print = null;
- String fingerPrint = "";
-
- if (impl != null) {
- print = new CertPrettyPrint(impl);
- fingerPrint = CMS.getFingerPrints(impl.getEncoded());
- }
-
- if ((print != null) && (fingerPrint != "")) {
- String pp = print.toString(locale) + "\n" +
- "Certificate Fingerprints:" + '\n' + fingerPrint;
- return pp;
- } else
- return null;
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- } catch (NoSuchAlgorithmException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_NO_SUCH_ALGORITHM", e.toString()));
- }
- }
-
- public String getCertPrettyPrint(String nickname, String date,
- Locale locale) throws EBaseException {
- try {
- X509Certificate[] certs = CryptoManager.getInstance().findCertsByNickname(nickname);
-
- if ((certs == null || certs.length == 0) &&
- mNicknameMapCertsTable != null) {
- certs = mNicknameMapCertsTable.get(nickname);
- }
- if (certs == null) {
- EBaseException e = new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
-
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw e;
- }
- X509CertImpl impl = null;
- Date qualifier = mFormatter.parse(date);
-
- for (int i = 0; i < certs.length; i++) {
- impl = new X509CertImpl(certs[i].getEncoded());
- Date d = impl.getNotAfter();
-
- if (d.equals(qualifier))
- break;
- }
-
- CertPrettyPrint print = null;
-
- if (impl != null)
- print = new CertPrettyPrint(impl);
-
- if (print != null)
- return print.toString(locale);
- else
- return null;
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- } catch (ParseException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.toString()));
- }
- }
-
- public String getCertPrettyPrint(String b64E, Locale locale) throws EBaseException {
- try {
- try {
- byte[] b = KeyCertUtil.convertB64EToByteArray(b64E);
- X509CertImpl impl = new X509CertImpl(b);
- CertPrettyPrint print = new CertPrettyPrint(impl);
-
- return print.toString(locale);
- } catch (CertificateException e) {
- // failed to decode as a certificate, try decoding
- // as a PKCS #7 blob
- StringBuffer content = new StringBuffer();
-
- String noHeader = CertUtils.stripCertBrackets(b64E);
- String normalized = CertUtils.normalizeCertStr(noHeader);
- byte data[] = Utils.base64decode(normalized);
-
- ContentInfo ci = (ContentInfo)
- ASN1Util.decode(ContentInfo.getTemplate(), data);
-
- if (!ci.getContentType().equals(ContentInfo.SIGNED_DATA)) {
- throw new CertificateException(
- "PKCS #7 structure is not a SignedData");
- }
- SignedData sd = (SignedData) ci.getInterpretedContent();
-
- if (!sd.hasCertificates()) {
- throw new CertificateException(
- "No certificates in PKCS #7 structure");
- }
- SET certs = sd.getCertificates();
-
- for (int i = 0; i < certs.size(); i++) {
- Certificate cert = (Certificate) certs.elementAt(i);
- X509CertImpl certImpl = new X509CertImpl(
- ASN1Util.encode(cert));
- CertPrettyPrint print = new CertPrettyPrint(certImpl);
-
- content.append(print.toString(Locale.getDefault()));
- }
-
- return content.toString();
- }
- } catch (InvalidBERException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR",
- "Failed to decode"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", e.getMessage()));
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_PRINT_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
- }
-
- public X509CertImpl getSignedCert(KeyCertData data, String certType, java.security.PrivateKey priKey)
- throws EBaseException {
- CertificateInfo cert = null;
-
- if (certType.equals(Constants.PR_CA_SIGNING_CERT)) {
- cert = new CASigningCert(data);
- } else if (certType.equals(Constants.PR_OCSP_SIGNING_CERT)) {
- cert = new OCSPSigningCert(data);
- } else if (certType.equals(Constants.PR_SERVER_CERT)) {
- cert = new SSLCert(data);
- } else if (certType.equals(Constants.PR_SERVER_CERT_RADM)) {
- cert = new SSLSelfSignedCert(data);
- }
-
- if (cert == null) {
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
-
- X509CertInfo certInfo = null;
- X509CertImpl signedCert = null;
-
- try {
- certInfo = cert.getCertInfo();
- SignatureAlgorithm sigAlg = (SignatureAlgorithm) data.get(Constants.PR_SIGNATURE_ALGORITHM);
-
- signedCert = KeyCertUtil.signCert(priKey, certInfo, sigAlg);
- } catch (NoSuchTokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SIGN_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_NOT_FOUND", ""));
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SIGN_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (PQGParamGenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_SIGN_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_PQG_GEN_FAILED"));
- }
-
- return signedCert;
- }
-
- public boolean isCACert(String fullNickname) throws EBaseException {
- try {
- X509Certificate cert = mCryptoManager.findCertByNickname(fullNickname);
- X509CertImpl impl = new X509CertImpl(cert.getEncoded());
- X509CertInfo certinfo = (X509CertInfo) impl.get(
- X509CertImpl.NAME + "." + X509CertImpl.INFO);
-
- if (certinfo == null)
- return false;
- else {
- CertificateExtensions exts = (CertificateExtensions) certinfo.get(X509CertInfo.EXTENSIONS);
-
- if (exts == null)
- return false;
- else {
- try {
- BasicConstraintsExtension ext = (BasicConstraintsExtension) exts
- .get(BasicConstraintsExtension.NAME);
-
- if (ext == null)
- return false;
- else {
- Boolean bool = (Boolean) ext.get(BasicConstraintsExtension.IS_CA);
-
- return bool.booleanValue();
- }
- } catch (IOException ee) {
- return false;
- }
- }
- }
- } catch (ObjectNotFoundException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IS_CA_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IS_CA_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_ERROR"));
- } catch (CertificateEncodingException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IS_CA_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_ERROR"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IS_CA_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_IS_CA_CERT", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_DECODE_CERT_FAILED"));
- }
- }
-
- public CertificateExtensions getExtensions(String tokenname, String nickname)
- throws EBaseException {
- try {
- return KeyCertUtil.getExtensions(tokenname, nickname);
- } catch (NotInitializedException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_EXTENSIONS", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CRYPTOMANAGER_UNINITIALIZED"));
- } catch (TokenException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_EXTENSIONS", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_TOKEN_ERROR"));
- } catch (ObjectNotFoundException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_EXTENSIONS", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_NOT_FOUND"));
- } catch (IOException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_EXTENSIONS", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_DECODE_CERT_FAILED"));
- } catch (CertificateException e) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_SECURITY_GET_EXTENSIONS", e.toString()));
- throw new EBaseException(CMS.getUserMessage("CMS_BASE_CERT_ERROR", ""));
- }
- }
-
- public void checkCertificateExt(String ext) throws EBaseException {
- KeyCertUtil.checkCertificateExt(ext);
- }
-
- public void checkKeyLength(String keyType, int keyLength, String certType, int minRSAKeyLen) throws EBaseException {
- // KeyCertUtil.checkKeyLength(keyType, keyLength, certType, minRSAKeyLen);
- }
-
- public PQGParams getPQG(int keysize) {
- return KeyCertUtil.getPQG(keysize);
- }
-
- public PQGParams getCAPQG(int keysize, IConfigStore store)
- throws EBaseException {
- return KeyCertUtil.getCAPQG(keysize, store);
- }
-
- public CertificateExtensions getCertExtensions(String tokenname, String nickname)
- throws NotInitializedException, TokenException, ObjectNotFoundException,
-
- IOException, CertificateException {
- return KeyCertUtil.getExtensions(tokenname, nickname);
- }
-}
-
-class JSSDatabaseCloser extends org.mozilla.jss.DatabaseCloser {
- public JSSDatabaseCloser() throws Exception {
- super();
- }
-
- public void closeDatabases() {
- super.closeDatabases();
- }
-}