From 31f1f8fe2fe0344270fb7dcc399c9f428f0fb7d1 Mon Sep 17 00:00:00 2001 From: Joshua Roys Date: Tue, 3 May 2011 14:57:43 -0400 Subject: [PATCH] Allow arbitrary profiles to use KRA archival Signed-off-by: Joshua Roys --- .../src/com/netscape/certsrv/profile/IProfile.java | 5 +++++ .../netscape/cms/profile/common/BasicProfile.java | 9 +++++++++ .../cms/servlet/profile/ProfileSelectServlet.java | 1 + .../cms/servlet/profile/ProfileServlet.java | 1 + .../shared/webapps/ca/ee/ca/ProfileSelect.template | 12 ++++++++++++ 5 files changed, 28 insertions(+), 0 deletions(-) diff --git a/base/common/src/com/netscape/certsrv/profile/IProfile.java b/base/common/src/com/netscape/certsrv/profile/IProfile.java index 262d3ea..abca788 100644 --- a/base/common/src/com/netscape/certsrv/profile/IProfile.java +++ b/base/common/src/com/netscape/certsrv/profile/IProfile.java @@ -180,16 +180,21 @@ public interface IProfile { * Retrieves the user id of the person who * approves this profile. * * @return user id of the approver of this profile */ public String getApprovedBy(); /* + * Does this profile want to archive its keys? + */ + public String wantArchive(); + + /* * Is this a renewal profile */ public String isRenewal(); /* * is output going to be in xml? */ public String isXmlOutput(); diff --git a/base/common/src/com/netscape/cms/profile/common/BasicProfile.java b/base/common/src/com/netscape/cms/profile/common/BasicProfile.java index aac1bb3..bd218dc 100644 --- a/base/common/src/com/netscape/cms/profile/common/BasicProfile.java +++ b/base/common/src/com/netscape/cms/profile/common/BasicProfile.java @@ -35,16 +35,17 @@ import com.netscape.certsrv.logging.*; * This class implements a basic profile. * * @version $Revision$, $Date$ */ public abstract class BasicProfile implements IProfile { public static final String PROP_ENABLE = "enable"; public static final String PROP_ENABLE_BY = "enableBy"; + public static final String PROP_WANT_ARCHIVE = "archive"; public static final String PROP_IS_RENEWAL = "renewal"; public static final String PROP_XML_OUTPUT = "xmlOutput"; public static final String PROP_VISIBLE = "visible"; public static final String PROP_INPUT_LIST = "list"; public static final String PROP_OUTPUT_LIST = "list"; public static final String PROP_UPDATER_LIST = "list"; public static final String PROP_POLICY_LIST = "list"; public static final String PROP_DEFAULT = "default"; @@ -86,16 +87,24 @@ public abstract class BasicProfile implements IProfile { public boolean isEnable() { try { return mConfig.getBoolean(PROP_ENABLE, false); } catch (EBaseException e) { return false; } } + public String wantArchive() { + try { + return mConfig.getString(PROP_WANT_ARCHIVE, "false"); + } catch (EBaseException e) { + return "false"; + } + } + public String isRenewal() { try { return mConfig.getString(PROP_IS_RENEWAL, "false"); } catch (EBaseException e) { return "false"; } } diff --git a/base/common/src/com/netscape/cms/servlet/profile/ProfileSelectServlet.java b/base/common/src/com/netscape/cms/servlet/profile/ProfileSelectServlet.java index 7d0edbb..54bcaeb 100644 --- a/base/common/src/com/netscape/cms/servlet/profile/ProfileSelectServlet.java +++ b/base/common/src/com/netscape/cms/servlet/profile/ProfileSelectServlet.java @@ -328,16 +328,17 @@ public class ProfileSelectServlet extends ProfileServlet { inputlist.add(inputset); } } } } } args.set(ARG_INPUT_LIST, inputlist); args.set(ARG_INPUT_PLUGIN_LIST, inputPluginlist); + args.set(ARG_WANT_ARCHIVE, profile.wantArchive()); args.set(ARG_IS_RENEWAL, profile.isRenewal()); args.set(ARG_XML_OUTPUT, profile.isXmlOutput()); // (5) return info as template outputTemplate(request, response, args); } private void handlePolicy(ArgList list, ServletResponse response, diff --git a/base/common/src/com/netscape/cms/servlet/profile/ProfileServlet.java b/base/common/src/com/netscape/cms/servlet/profile/ProfileServlet.java index 4013229..ecdeb74 100644 --- a/base/common/src/com/netscape/cms/servlet/profile/ProfileServlet.java +++ b/base/common/src/com/netscape/cms/servlet/profile/ProfileServlet.java @@ -106,16 +106,17 @@ public class ProfileServlet extends CMSServlet { public final static String ARG_INPUT_PLUGIN_NAME = "inputPluginName"; public final static String ARG_INPUT_PLUGIN_DESC = "inputPluginDesc"; public final static String ARG_INPUT_LIST = "inputList"; public final static String ARG_INPUT_ID = "inputId"; public final static String ARG_INPUT_SYNTAX = "inputSyntax"; public final static String ARG_INPUT_CONSTRAINT = "inputConstraint"; public final static String ARG_INPUT_NAME = "inputName"; public final static String ARG_INPUT_VAL = "inputVal"; + public final static String ARG_WANT_ARCHIVE = "archive"; public final static String ARG_IS_RENEWAL = "renewal"; public final static String ARG_XML_OUTPUT = "xmlOutput"; public final static String ARG_OUTPUT_LIST = "outputList"; public final static String ARG_OUTPUT_ID = "outputId"; public final static String ARG_OUTPUT_SYNTAX = "outputSyntax"; public final static String ARG_OUTPUT_CONSTRAINT = "outputConstraint"; public final static String ARG_OUTPUT_NAME = "outputName"; public final static String ARG_OUTPUT_VAL = "outputVal"; diff --git a/dogtag/ca-ui/shared/webapps/ca/ee/ca/ProfileSelect.template b/dogtag/ca-ui/shared/webapps/ca/ee/ca/ProfileSelect.template index 4ddd1a9..0c23126 100644 --- a/dogtag/ca-ui/shared/webapps/ca/ee/ca/ProfileSelect.template +++ b/dogtag/ca-ui/shared/webapps/ca/ee/ca/ProfileSelect.template @@ -240,16 +240,28 @@ function validate() signKeySize = parseInt(signKeyParam.value); } crmfObject = crypto.generateCRMFRequest( "CN=x", "regToken", "authenticator", keyTransportCert, "setCRMFRequest();", encKeySize, encKeyParams, encKeyType, signKeySize, signKeyParams, signKeyType); + } else if (archive == 'true') { + if (keyTypeOptions("") == "EC") { + encKeyType = "ec-ex"; + encKeyParams = "curve=" + keyParam.value; + } else { + encKeySize = parseInt(keyParam.value); + } + + crmfObject = crypto.generateCRMFRequest( + "CN=x", "regToken", "authenticator", + keyTransportCert, "setCRMFRequest();", + encKeySize, encKeyParams, encKeyType); } else { if (keyTypeOptions("") == "EC") { dualKeyType = "ec-dual-use"; keyParams = "curve=" + keyParam.value; } else { keySize = parseInt(keyParam.value); } crmfObject = crypto.generateCRMFRequest( -- 1.7.3.4