summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/cms/profile/def/CertificatePoliciesExtDefault.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/cms/profile/def/CertificatePoliciesExtDefault.java')
-rw-r--r--base/common/src/com/netscape/cms/profile/def/CertificatePoliciesExtDefault.java793
1 files changed, 0 insertions, 793 deletions
diff --git a/base/common/src/com/netscape/cms/profile/def/CertificatePoliciesExtDefault.java b/base/common/src/com/netscape/cms/profile/def/CertificatePoliciesExtDefault.java
deleted file mode 100644
index 9629e4990..000000000
--- a/base/common/src/com/netscape/cms/profile/def/CertificatePoliciesExtDefault.java
+++ /dev/null
@@ -1,793 +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.cms.profile.def;
-
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Locale;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import netscape.security.util.ObjectIdentifier;
-import netscape.security.x509.CPSuri;
-import netscape.security.x509.CertificatePoliciesExtension;
-import netscape.security.x509.CertificatePolicyId;
-import netscape.security.x509.CertificatePolicyInfo;
-import netscape.security.x509.DisplayText;
-import netscape.security.x509.NoticeReference;
-import netscape.security.x509.PKIXExtensions;
-import netscape.security.x509.PolicyQualifiers;
-import netscape.security.x509.Qualifier;
-import netscape.security.x509.UserNotice;
-import netscape.security.x509.X509CertInfo;
-
-import com.netscape.certsrv.apps.CMS;
-import com.netscape.certsrv.base.IConfigStore;
-import com.netscape.certsrv.profile.EProfileException;
-import com.netscape.certsrv.profile.IProfile;
-import com.netscape.certsrv.property.Descriptor;
-import com.netscape.certsrv.property.EPropertyException;
-import com.netscape.certsrv.property.IDescriptor;
-import com.netscape.certsrv.request.IRequest;
-
-/**
- * This class implements an enrollment default policy
- * that populates a policy mappings extension
- * into the certificate template.
- *
- * @version $Revision$, $Date$
- */
-public class CertificatePoliciesExtDefault extends EnrollExtDefault {
-
- public static final String CONFIG_CRITICAL = "Critical";
- public static final String CONFIG_PREFIX = "PoliciesExt.certPolicy";
- public static final String CONFIG_PREFIX1 = "PolicyQualifiers";
- public static final String CONFIG_POLICY_ENABLE = "enable";
- public static final String CONFIG_POLICY_NUM = "PoliciesExt.num";
- public static final String CONFIG_POLICY_ID = "policyId";
- public static final String CONFIG_POLICY_QUALIFIERS_NUM = "PolicyQualifiers.num";
- public static final String CONFIG_CPSURI_ENABLE = "CPSURI.enable";
- public static final String CONFIG_USERNOTICE_ENABLE = "usernotice.enable";
- public static final String CONFIG_CPSURI_VALUE = "CPSURI.value";
- public static final String CONFIG_USERNOTICE_ORG = "usernotice.noticeReference.organization";
- public static final String CONFIG_USERNOTICE_NUMBERS = "usernotice.noticeReference.noticeNumbers";
- public static final String CONFIG_USERNOTICE_TEXT = "usernotice.explicitText.value";
-
- public static final String VAL_CRITICAL = "Critical";
- public static final String VAL_POLICY_QUALIFIERS = "policyQualifiers";
-
- private static final String SEPARATOR = ".";
- private static final int DEF_NUM_POLICIES = 5;
- private static final int DEF_NUM_QUALIFIERS = 1;
- private static final int MAX_NUM_POLICIES = 20;
- private static final String POLICY_ID_ENABLE = "Enable";
- private static final String POLICY_ID = "Policy Id";
- private static final String POLICY_QUALIFIER_CPSURI_ENABLE = "CPSuri Enable";
- private static final String POLICY_QUALIFIER_USERNOTICE_ENABLE = "UserNotice Enable";
- private static final String USERNOTICE_REF_ORG = "UserNoticeReference Organization";
- private static final String USERNOTICE_REF_NUMBERS = "UserNoticeReference Numbers";
- private static final String USERNOTICE_EXPLICIT_TEXT = "UserNoticeReference Explicit Text";
- private static final String CPSURI = "CPS uri";
-
- public CertificatePoliciesExtDefault() {
- super();
- }
-
- protected int getNumPolicies() {
- int num = DEF_NUM_POLICIES;
- String numPolicies = getConfig(CONFIG_POLICY_NUM);
-
- if (numPolicies != null) {
- try {
- num = Integer.parseInt(numPolicies);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
-
- if (num >= MAX_NUM_POLICIES)
- num = DEF_NUM_POLICIES;
- return num;
- }
-
- protected int getNumQualifiers() {
- int num = DEF_NUM_QUALIFIERS;
- String numQualifiers = getConfig(CONFIG_POLICY_QUALIFIERS_NUM);
- if (numQualifiers != null) {
- try {
- num = Integer.parseInt(numQualifiers);
- } catch (NumberFormatException e) {
- // ignore
- }
- }
- return num;
- }
-
- public void init(IProfile profile, IConfigStore config)
- throws EProfileException {
- super.init(profile, config);
-
- refreshConfigAndValueNames();
- }
-
- public void setConfig(String name, String value)
- throws EPropertyException {
- int num = 0;
- if (name.equals(CONFIG_POLICY_NUM)) {
- try {
- num = Integer.parseInt(value);
-
- if (num >= MAX_NUM_POLICIES || num < 0) {
- throw new EPropertyException(CMS.getUserMessage(
- "CMS_INVALID_PROPERTY", CONFIG_POLICY_NUM));
- }
-
- } catch (Exception e) {
- throw new EPropertyException(CMS.getUserMessage(
- "CMS_INVALID_PROPERTY", CONFIG_POLICY_NUM));
- }
- }
- super.setConfig(name, value);
- }
-
- public Enumeration<String> getConfigNames() {
- refreshConfigAndValueNames();
- return super.getConfigNames();
- }
-
- protected void refreshConfigAndValueNames() {
-
- super.refreshConfigAndValueNames();
-
- addValueName(VAL_CRITICAL);
- addValueName(VAL_POLICY_QUALIFIERS);
-
- addConfigName(CONFIG_CRITICAL);
- int num = getNumPolicies();
- int numQualifiers = getNumQualifiers();
-
- addConfigName(CONFIG_POLICY_NUM);
-
- for (int i = 0; i < num; i++) {
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_ID);
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_ENABLE);
- for (int j = 0; j < numQualifiers; j++) {
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_CPSURI_ENABLE);
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_ENABLE);
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_CPSURI_VALUE);
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_ORG);
- addConfigName(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_NUMBERS);
- addConfigName(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_TEXT);
- }
- }
- }
-
- public IDescriptor getConfigDescriptor(Locale locale, String name) {
-
- if (name.equals(CONFIG_CRITICAL)) {
- return new Descriptor(IDescriptor.BOOLEAN, null,
- "false",
- CMS.getUserMessage(locale, "CMS_PROFILE_CRITICAL"));
- } else if (name.indexOf(CONFIG_POLICY_ID) >= 0) {
- return new Descriptor(IDescriptor.STRING, null,
- null,
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_ID"));
- } else if (name.indexOf(CONFIG_CPSURI_ENABLE) >= 0) {
- return new Descriptor(IDescriptor.BOOLEAN, null,
- "false",
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_QUALIFIER_CPSURI_ENABLE"));
- } else if (name.indexOf(CONFIG_USERNOTICE_ENABLE) >= 0) {
- return new Descriptor(IDescriptor.BOOLEAN, null,
- "false",
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_QUALIFIER_USERNOTICE_ENABLE"));
- } else if (name.indexOf(CONFIG_POLICY_ENABLE) >= 0) {
- return new Descriptor(IDescriptor.BOOLEAN, null,
- "false",
- CMS.getUserMessage(locale, "CMS_PROFILE_CERTIFICATE_POLICY_ENABLE"));
- } else if (name.indexOf(CONFIG_POLICY_QUALIFIERS_NUM) >= 0) {
- return new Descriptor(IDescriptor.INTEGER, null,
- "1",
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_QUALIFIER_NUM"));
- } else if (name.indexOf(CONFIG_USERNOTICE_ORG) >= 0) {
- return new Descriptor(IDescriptor.STRING, null,
- null,
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_USERNOTICE_REF_ORG"));
- } else if (name.indexOf(CONFIG_USERNOTICE_NUMBERS) >= 0) {
- return new Descriptor(IDescriptor.STRING, null,
- null,
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_USERNOTICE_REF_NUMBERS"));
- } else if (name.indexOf(CONFIG_USERNOTICE_TEXT) >= 0) {
- return new Descriptor(IDescriptor.STRING, null,
- null,
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_USERNOTICE_EXPLICIT_TEXT"));
- } else if (name.indexOf(CONFIG_CPSURI_VALUE) >= 0) {
- return new Descriptor(IDescriptor.STRING, null,
- null,
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_CPSURI"));
- } else if (name.indexOf(CONFIG_POLICY_NUM) >= 0) {
- return new Descriptor(IDescriptor.INTEGER, null,
- "5",
- CMS.getUserMessage(locale, "CMS_PROFILE_NUM_POLICIES"));
- }
- return null;
- }
-
- public IDescriptor getValueDescriptor(Locale locale, String name) {
-
- if (name.equals(VAL_CRITICAL)) {
- return new Descriptor(IDescriptor.BOOLEAN, null,
- "false",
- CMS.getUserMessage(locale, "CMS_PROFILE_CRITICAL"));
- } else if (name.equals(VAL_POLICY_QUALIFIERS)) {
- return new Descriptor(IDescriptor.STRING_LIST, null,
- null,
- CMS.getUserMessage(locale, "CMS_PROFILE_POLICY_QUALIFIERS"));
- }
- return null;
- }
-
- private Hashtable<String, String> buildRecords(String value) throws EPropertyException {
- StringTokenizer st = new StringTokenizer(value, "\r\n");
- Hashtable<String, String> table = new Hashtable<String, String>();
- while (st.hasMoreTokens()) {
- String token = st.nextToken();
- int index = token.indexOf(":");
- if (index <= 0)
- throw new EPropertyException(CMS.getUserMessage(
- "CMS_INVALID_PROPERTY", token));
- String name = token.substring(0, index);
- String val = "";
- if ((token.length() - 1) > index) {
- val = token.substring(index + 1);
- }
- table.put(name, val);
- }
-
- return table;
- }
-
- public void setValue(String name, Locale locale,
- X509CertInfo info, String value)
- throws EPropertyException {
- try {
- CertificatePoliciesExtension ext = null;
-
- if (name == null) {
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_INVALID_PROPERTY", name));
- }
- if (name.equals(VAL_CRITICAL)) {
- ext = (CertificatePoliciesExtension)
- getExtension(PKIXExtensions.CertificatePolicies_Id.toString(),
- info);
- boolean val = Boolean.valueOf(value).booleanValue();
-
- ext.setCritical(val);
- } else if (name.equals(VAL_POLICY_QUALIFIERS)) {
- ext = (CertificatePoliciesExtension)
- getExtension(PKIXExtensions.CertificatePolicies_Id.toString(),
- info);
-
- Hashtable<String, String> h = buildRecords(value);
-
- String numStr = h.get(CONFIG_POLICY_NUM);
- int size = Integer.parseInt(numStr);
-
- Vector<CertificatePolicyInfo> certificatePolicies = new Vector<CertificatePolicyInfo>();
- for (int i = 0; i < size; i++) {
- String enable = h.get(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_ENABLE);
- CertificatePolicyInfo cinfo = null;
- if (enable != null && enable.equals("true")) {
- String policyId = h.get(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_ID);
-
- if (policyId == null || policyId.length() == 0)
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_PROFILE_CERTIFICATE_POLICIES_EMPTY_POLICYID"));
- CertificatePolicyId cpolicyId = getPolicyId(policyId);
-
- String qualifersNum =
- h.get(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_QUALIFIERS_NUM);
- PolicyQualifiers policyQualifiers = new PolicyQualifiers();
- int num = 0;
- if (qualifersNum != null && qualifersNum.length() > 0)
- num = Integer.parseInt(qualifersNum);
- for (int j = 0; j < num; j++) {
- String cpsuriEnable =
- h.get(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_CPSURI_ENABLE);
- String usernoticeEnable =
- h.get(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR
- + CONFIG_USERNOTICE_ENABLE);
- if (cpsuriEnable != null && cpsuriEnable.equals("true")) {
- String cpsuri =
- h.get(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_CPSURI_VALUE);
- netscape.security.x509.PolicyQualifierInfo qualifierInfo = createCPSuri(cpsuri);
- if (qualifierInfo != null)
- policyQualifiers.add(qualifierInfo);
- } else if (usernoticeEnable != null && enable.equals("true")) {
- String org =
- h.get(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR
- + CONFIG_USERNOTICE_ORG);
- String noticenumbers =
- h.get(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR
- + CONFIG_USERNOTICE_NUMBERS);
- String explicitText =
- h.get(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR
- + CONFIG_USERNOTICE_TEXT);
- netscape.security.x509.PolicyQualifierInfo qualifierInfo = createUserNotice(org,
- noticenumbers, explicitText);
- if (qualifierInfo != null)
- policyQualifiers.add(qualifierInfo);
- }
- }
-
- if (policyQualifiers.size() <= 0) {
- cinfo = new CertificatePolicyInfo(cpolicyId);
- } else {
- cinfo = new CertificatePolicyInfo(cpolicyId, policyQualifiers);
- }
- if (cinfo != null)
- certificatePolicies.addElement(cinfo);
- }
- }
-
- ext.set(CertificatePoliciesExtension.INFOS, certificatePolicies);
- } else {
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_INVALID_PROPERTY", name));
- }
-
- replaceExtension(PKIXExtensions.CertificatePolicies_Id.toString(),
- ext, info);
- } catch (EProfileException e) {
- CMS.debug("CertificatePoliciesExtDefault: setValue " + e.toString());
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_INVALID_PROPERTY", name));
- } catch (IOException e) {
- CMS.debug("CertificatePoliciesExtDefault: setValue " + e.toString());
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_INVALID_PROPERTY", name));
- }
- }
-
- @SuppressWarnings("unchecked")
- public String getValue(String name, Locale locale,
- X509CertInfo info)
- throws EPropertyException {
- CertificatePoliciesExtension ext = null;
-
- if (name == null) {
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_INVALID_PROPERTY", name));
- }
-
- if (name.equals(VAL_CRITICAL)) {
- ext = (CertificatePoliciesExtension)
- getExtension(PKIXExtensions.CertificatePolicies_Id.toString(),
- info);
-
- if (ext == null) {
- return null;
- }
- if (ext.isCritical()) {
- return "true";
- } else {
- return "false";
- }
- } else if (name.equals(VAL_POLICY_QUALIFIERS)) {
- ext = (CertificatePoliciesExtension)
- getExtension(PKIXExtensions.CertificatePolicies_Id.toString(),
- info);
-
- if (ext == null)
- return "";
-
- StringBuffer sb = new StringBuffer();
- int num_policies = getNumPolicies();
- sb.append(CONFIG_POLICY_NUM);
- sb.append(":");
- sb.append(num_policies);
- sb.append("\n");
- Vector<CertificatePolicyInfo> infos;
-
- try {
- infos = (Vector<CertificatePolicyInfo>) ext.get(CertificatePoliciesExtension.INFOS);
- } catch (IOException ee) {
- infos = null;
- }
-
- for (int i = 0; i < num_policies; i++) {
- int qSize = 0;
- String policyId = "";
- String policyEnable = "false";
- PolicyQualifiers qualifiers = null;
- if (infos.size() > 0) {
- CertificatePolicyInfo cinfo =
- infos.elementAt(0);
-
- CertificatePolicyId id1 = cinfo.getPolicyIdentifier();
- policyId = id1.getIdentifier().toString();
- policyEnable = "true";
- qualifiers = cinfo.getPolicyQualifiers();
- if (qualifiers != null)
- qSize = qualifiers.size();
- infos.removeElementAt(0);
- }
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_ENABLE);
- sb.append(":");
- sb.append(policyEnable);
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_ID);
- sb.append(":");
- sb.append(policyId);
- sb.append("\n");
-
- if (qSize == 0) {
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_QUALIFIERS_NUM);
- sb.append(":");
- sb.append(DEF_NUM_QUALIFIERS);
- sb.append("\n");
- } else {
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_POLICY_QUALIFIERS_NUM);
- sb.append(":");
- sb.append(qSize);
- sb.append("\n");
- }
- if (qSize == 0) {
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + "0" + SEPARATOR + CONFIG_CPSURI_ENABLE);
- sb.append(":");
- sb.append("false");
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + "0" + SEPARATOR + CONFIG_CPSURI_VALUE);
- sb.append(":");
- sb.append("");
- sb.append("\n");
- sb.append(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + "0" + SEPARATOR + CONFIG_USERNOTICE_ENABLE);
- sb.append(":");
- sb.append("false");
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + "0" + SEPARATOR + CONFIG_USERNOTICE_ORG);
- sb.append(":");
- sb.append("");
- sb.append("\n");
- sb.append(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + "0" + SEPARATOR + CONFIG_USERNOTICE_NUMBERS);
- sb.append(":");
- sb.append("");
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + "0" + SEPARATOR + CONFIG_USERNOTICE_TEXT);
- sb.append(":");
- sb.append("");
- sb.append("\n");
- }
-
- for (int j = 0; j < qSize; j++) {
- netscape.security.x509.PolicyQualifierInfo qinfo = qualifiers.getInfoAt(j);
- ObjectIdentifier oid = qinfo.getId();
- Qualifier qualifier = qinfo.getQualifier();
-
- String cpsuriEnable = "false";
- String usernoticeEnable = "false";
- String cpsuri = "";
- String org = "";
- StringBuffer noticeNum = new StringBuffer();
- String explicitText = "";
-
- if (oid.toString().equals(netscape.security.x509.PolicyQualifierInfo.QT_CPS.toString())) {
- cpsuriEnable = "true";
- CPSuri content = (CPSuri) qualifier;
- cpsuri = content.getURI();
- } else if (oid.toString().equals(netscape.security.x509.PolicyQualifierInfo.QT_UNOTICE.toString())) {
- usernoticeEnable = "true";
- UserNotice content = (UserNotice) qualifier;
- NoticeReference ref = content.getNoticeReference();
- if (ref != null) {
- org = ref.getOrganization().getText();
- int[] nums = ref.getNumbers();
- for (int k = 0; k < nums.length; k++) {
- if (k != 0) {
- noticeNum.append(",");
- noticeNum.append(nums[k]);
- } else
- noticeNum.append(nums[k]);
- }
- }
- DisplayText displayText = content.getDisplayText();
- if (displayText != null)
- explicitText = displayText.getText();
- }
-
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_CPSURI_ENABLE);
- sb.append(":");
- sb.append(cpsuriEnable);
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_CPSURI_VALUE);
- sb.append(":");
- sb.append(cpsuri);
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_ENABLE);
- sb.append(":");
- sb.append(usernoticeEnable);
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_ORG);
- sb.append(":");
- sb.append(org);
- sb.append("\n");
- sb.append(CONFIG_PREFIX
- + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_NUMBERS);
- sb.append(":");
- sb.append(noticeNum.toString());
- sb.append("\n");
- sb.append(CONFIG_PREFIX + i + SEPARATOR + CONFIG_PREFIX1 + j + SEPARATOR + CONFIG_USERNOTICE_TEXT);
- sb.append(":");
- sb.append(explicitText);
- sb.append("\n");
- }
- } // end of for loop
- return sb.toString();
- } else {
- throw new EPropertyException(CMS.getUserMessage(
- locale, "CMS_INVALID_PROPERTY", name));
- }
- }
-
- public String getText(Locale locale) {
- StringBuffer sb = new StringBuffer();
- int num = getNumPolicies();
- int num1 = getNumQualifiers();
-
- try {
- IConfigStore basesubstore = getConfigStore().getSubStore("params");
- sb.append("{");
- sb.append(CONFIG_POLICY_NUM + ":");
- sb.append(num);
- sb.append(",");
- for (int i = 0; i < num; i++) {
- sb.append("{");
- IConfigStore substore = basesubstore.getSubStore(CONFIG_PREFIX + i);
- String enable = substore.getString(CONFIG_POLICY_ENABLE, "");
- sb.append(POLICY_ID_ENABLE + ":");
- sb.append(enable);
- sb.append(",");
- String policyId = substore.getString(CONFIG_POLICY_ID, "");
- sb.append(POLICY_ID + ":");
- sb.append(policyId);
- sb.append(",");
- String qualifiersNum = substore.getString(CONFIG_POLICY_QUALIFIERS_NUM, "");
- sb.append(CONFIG_POLICY_QUALIFIERS_NUM + ":");
- sb.append(qualifiersNum);
- sb.append(",");
- for (int j = 0; j < num1; j++) {
- IConfigStore substore1 = substore.getSubStore(CONFIG_PREFIX1 + j);
- sb.append("{");
- String cpsuriEnable = substore1.getString(CONFIG_CPSURI_ENABLE, "");
- sb.append(POLICY_QUALIFIER_CPSURI_ENABLE + ":");
- sb.append(cpsuriEnable);
- sb.append(",");
- String usernoticeEnable = substore1.getString(CONFIG_USERNOTICE_ENABLE, "");
- sb.append(POLICY_QUALIFIER_USERNOTICE_ENABLE + ":");
- sb.append(usernoticeEnable);
- sb.append(",");
- String org = substore1.getString(CONFIG_USERNOTICE_ORG, "");
- sb.append(USERNOTICE_REF_ORG + ":");
- sb.append(org);
- sb.append(",");
- String refNums = substore1.getString(CONFIG_USERNOTICE_NUMBERS, "");
- sb.append(USERNOTICE_REF_NUMBERS + ":");
- sb.append(refNums);
- sb.append(",");
- String explicitText = substore1.getString(CONFIG_USERNOTICE_TEXT, "");
- sb.append(USERNOTICE_EXPLICIT_TEXT + ":");
- sb.append(explicitText);
- sb.append(",");
- String cpsuri = substore1.getString(CONFIG_CPSURI_VALUE, "");
- sb.append(CPSURI + ":");
- sb.append(cpsuri);
- sb.append("}");
- }
- sb.append("}");
- }
- sb.append("}");
- return CMS.getUserMessage(locale,
- "CMS_PROFILE_DEF_CERTIFICATE_POLICIES_EXT",
- getConfig(CONFIG_CRITICAL), sb.toString());
- } catch (Exception e) {
- return "";
- }
- }
-
- /**
- * Populates the request with this policy default.
- */
- public void populate(IRequest request, X509CertInfo info)
- throws EProfileException {
- CertificatePoliciesExtension ext = createExtension();
-
- if (ext == null)
- return;
- addExtension(PKIXExtensions.CertificatePolicies_Id.toString(),
- ext, info);
- }
-
- public CertificatePoliciesExtension createExtension()
- throws EProfileException {
- CertificatePoliciesExtension ext = null;
-
- try {
- boolean critical = getConfigBoolean(CONFIG_CRITICAL);
- Vector<CertificatePolicyInfo> certificatePolicies = new Vector<CertificatePolicyInfo>();
- int num = getNumPolicies();
- CMS.debug("CertificatePoliciesExtension: createExtension: number of policies=" + num);
- IConfigStore config = getConfigStore();
-
- for (int i = 0; i < num; i++) {
- IConfigStore basesubstore = config.getSubStore("params");
- IConfigStore substore = basesubstore.getSubStore(CONFIG_PREFIX + i);
- String enable = substore.getString(CONFIG_POLICY_ENABLE);
-
- CMS.debug("CertificatePoliciesExtension: createExtension: CertificatePolicy " + i + " enable=" + enable);
- if (enable != null && enable.equals("true")) {
- String policyId = substore.getString(CONFIG_POLICY_ID);
- CertificatePolicyId cpolicyId = getPolicyId(policyId);
- CMS.debug("CertificatePoliciesExtension: createExtension: CertificatePolicy "
- + i + " policyId=" + policyId);
- int qualifierNum = getNumQualifiers();
- PolicyQualifiers policyQualifiers = new PolicyQualifiers();
- for (int j = 0; j < qualifierNum; j++) {
- IConfigStore substore1 = substore.getSubStore(CONFIG_PREFIX1 + j);
- String cpsuriEnable = substore1.getString(CONFIG_CPSURI_ENABLE);
- String usernoticeEnable = substore1.getString(CONFIG_USERNOTICE_ENABLE);
-
- if (cpsuriEnable != null && cpsuriEnable.equals("true")) {
- String cpsuri = substore1.getString(CONFIG_CPSURI_VALUE, "");
- netscape.security.x509.PolicyQualifierInfo qualifierInfo = createCPSuri(cpsuri);
- if (qualifierInfo != null)
- policyQualifiers.add(qualifierInfo);
- } else if (usernoticeEnable != null &&
- usernoticeEnable.equals("true")) {
-
- String org = substore1.getString(CONFIG_USERNOTICE_ORG);
- String noticenumbers = substore1.getString(CONFIG_USERNOTICE_NUMBERS);
- String explicitText = substore1.getString(CONFIG_USERNOTICE_TEXT);
- netscape.security.x509.PolicyQualifierInfo qualifierInfo = createUserNotice(org,
- noticenumbers, explicitText);
- if (qualifierInfo != null)
- policyQualifiers.add(qualifierInfo);
- }
- }
-
- CertificatePolicyInfo info = null;
- if (policyQualifiers.size() <= 0) {
- info =
- new CertificatePolicyInfo(cpolicyId);
- } else {
- info =
- new CertificatePolicyInfo(cpolicyId, policyQualifiers);
- }
-
- if (info != null)
- certificatePolicies.addElement(info);
- }
- }
-
- ext = new CertificatePoliciesExtension(critical, certificatePolicies);
- } catch (EPropertyException e) {
- throw new EProfileException(e.toString());
- } catch (EProfileException e) {
- throw e;
- } catch (Exception e) {
- CMS.debug("CertificatePoliciesExtDefault: createExtension " +
- e.toString());
- }
-
- return ext;
- }
-
- private CertificatePolicyId getPolicyId(String policyId) throws EPropertyException {
- if (policyId == null || policyId.length() == 0)
- throw new EPropertyException(CMS.getUserMessage(
- "CMS_PROFILE_CERTIFICATE_POLICIES_EMPTY_POLICYID"));
-
- CertificatePolicyId cpolicyId = null;
- try {
- cpolicyId = new CertificatePolicyId(
- ObjectIdentifier.getObjectIdentifier(policyId));
- return cpolicyId;
- } catch (Exception e) {
- throw new EPropertyException(CMS.getUserMessage(
- "CMS_PROFILE_CERTIFICATE_POLICIES_POLICYID_ERROR", policyId));
- }
- }
-
- private netscape.security.x509.PolicyQualifierInfo createCPSuri(String uri) throws EPropertyException {
- if (uri == null || uri.length() == 0)
- throw new EPropertyException(CMS.getUserMessage(
- "CMS_PROFILE_CERTIFICATE_POLICIES_EMPTY_CPSURI"));
-
- CPSuri cpsURI = new CPSuri(uri);
- netscape.security.x509.PolicyQualifierInfo policyQualifierInfo2 =
- new netscape.security.x509.PolicyQualifierInfo(netscape.security.x509.PolicyQualifierInfo.QT_CPS,
- cpsURI);
-
- return policyQualifierInfo2;
- }
-
- private netscape.security.x509.PolicyQualifierInfo createUserNotice(String organization,
- String noticeText, String noticeNums) throws EPropertyException {
-
- if ((organization == null || organization.length() == 0) &&
- (noticeNums == null || noticeNums.length() == 0) &&
- (noticeText == null || noticeText.length() == 0))
- return null;
-
- DisplayText explicitText = null;
- if (noticeText != null && noticeText.length() > 0)
- explicitText = new DisplayText(DisplayText.tag_VisibleString, noticeText);
-
- int nums[] = null;
- if (noticeNums != null && noticeNums.length() > 0) {
- Vector<String> numsVector = new Vector<String>();
- StringTokenizer tokens = new StringTokenizer(noticeNums, ";");
- while (tokens.hasMoreTokens()) {
- String num = tokens.nextToken().trim();
- numsVector.addElement(num);
- }
-
- nums = new int[numsVector.size()];
- try {
- for (int i = 0; i < numsVector.size(); i++) {
- Integer ii = new Integer(numsVector.elementAt(i));
- nums[i] = ii.intValue();
- }
- } catch (Exception e) {
- throw new EPropertyException("Wrong notice numbers");
- }
- }
-
- DisplayText orgName = null;
- if (organization != null && organization.length() > 0) {
- orgName =
- new DisplayText(DisplayText.tag_VisibleString, organization);
- }
-
- NoticeReference noticeReference = null;
-
- if (orgName != null)
- noticeReference = new NoticeReference(orgName, nums);
-
- UserNotice userNotice = null;
- if (explicitText != null || noticeReference != null) {
- userNotice = new UserNotice(noticeReference, explicitText);
-
- netscape.security.x509.PolicyQualifierInfo policyQualifierInfo1 =
- new netscape.security.x509.PolicyQualifierInfo(
- netscape.security.x509.PolicyQualifierInfo.QT_UNOTICE, userNotice);
- return policyQualifierInfo1;
- }
-
- return null;
- }
-}