From 3c9b8e787ccf066c38469e1fe2c119d5c410bb5e Mon Sep 17 00:00:00 2001 From: Endi Sukma Dewata Date: Sat, 11 Aug 2012 10:32:01 -0500 Subject: Reorganized REST server classes. The factory and DAO classes used by REST services have been moved into the com.netscape.cms.servlet. packages. Ticket #215 --- .../servlet/cert/CertEnrollmentRequestFactory.java | 52 ++++ .../netscape/cms/servlet/cert/CertRequestDAO.java | 219 +++++++++++++++++ .../cms/servlet/cert/CertRequestInfoFactory.java | 83 +++++++ .../servlet/cert/CertReviewResponseFactory.java | 175 +++++++++++++ .../com/netscape/cms/servlet/cert/CertService.java | 1 - .../cms/servlet/cert/EnrollmentProcessor.java | 1 - .../cms/servlet/cert/RenewalProcessor.java | 1 - .../cms/servlet/cert/RequestProcessor.java | 3 +- .../netscape/cms/servlet/key/KeyRequestDAO.java | 271 +++++++++++++++++++++ .../com/netscape/cms/servlet/key/KeyService.java | 1 - .../servlet/profile/PolicyConstraintFactory.java | 44 ++++ .../cms/servlet/profile/PolicyDefaultFactory.java | 67 +++++ .../cms/servlet/profile/ProfileInputFactory.java | 41 ++++ .../cms/servlet/profile/ProfileOutputFactory.java | 49 ++++ .../profile/model/PolicyConstraintFactory.java | 42 ---- .../profile/model/PolicyDefaultFactory.java | 65 ----- .../servlet/profile/model/ProfileInputFactory.java | 40 --- .../profile/model/ProfileOutputFactory.java | 47 ---- .../cms/servlet/request/CMSRequestDAO.java | 168 +++++++++++++ .../cms/servlet/request/CertRequestService.java | 6 +- .../cms/servlet/request/KeyRequestService.java | 2 +- .../cms/servlet/request/model/CMSRequestDAO.java | 166 ------------- .../model/CertEnrollmentRequestFactory.java | 51 ---- .../cms/servlet/request/model/CertRequestDAO.java | 215 ---------------- .../request/model/CertRequestInfoFactory.java | 83 ------- .../request/model/CertReviewResponseFactory.java | 174 ------------- .../cms/servlet/request/model/KeyRequestDAO.java | 265 -------------------- 27 files changed, 1174 insertions(+), 1158 deletions(-) create mode 100644 base/common/src/com/netscape/cms/servlet/cert/CertEnrollmentRequestFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java create mode 100644 base/common/src/com/netscape/cms/servlet/cert/CertRequestInfoFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/cert/CertReviewResponseFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java create mode 100644 base/common/src/com/netscape/cms/servlet/profile/PolicyConstraintFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/profile/PolicyDefaultFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/profile/ProfileInputFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/profile/ProfileOutputFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/profile/model/PolicyConstraintFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/profile/model/PolicyDefaultFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/profile/model/ProfileInputFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/profile/model/ProfileOutputFactory.java create mode 100644 base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java delete mode 100644 base/common/src/com/netscape/cms/servlet/request/model/CMSRequestDAO.java delete mode 100644 base/common/src/com/netscape/cms/servlet/request/model/CertEnrollmentRequestFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/request/model/CertRequestDAO.java delete mode 100644 base/common/src/com/netscape/cms/servlet/request/model/CertRequestInfoFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/request/model/CertReviewResponseFactory.java delete mode 100644 base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertEnrollmentRequestFactory.java b/base/common/src/com/netscape/cms/servlet/cert/CertEnrollmentRequestFactory.java new file mode 100644 index 000000000..2aab69b37 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/cert/CertEnrollmentRequestFactory.java @@ -0,0 +1,52 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.cert; + +import java.util.Enumeration; +import java.util.Locale; + +import com.netscape.certsrv.base.IArgBlock; +import com.netscape.certsrv.profile.EProfileException; +import com.netscape.certsrv.profile.IProfile; +import com.netscape.certsrv.profile.IProfileInput; +import com.netscape.cms.servlet.common.CMSRequest; +import com.netscape.cms.servlet.profile.ProfileInputFactory; +import com.netscape.cms.servlet.profile.model.ProfileInput; +import com.netscape.cms.servlet.request.model.CertEnrollmentRequest; + +public class CertEnrollmentRequestFactory { + + public static CertEnrollmentRequest create(CMSRequest cmsReq, IProfile profile, Locale locale) + throws EProfileException { + IArgBlock params = cmsReq.getHttpParams(); + + CertEnrollmentRequest ret = new CertEnrollmentRequest(); + ret.setProfileId(profile.getId()); + + // populate profile inputs + Enumeration inputIds = profile.getProfileInputIds(); + while (inputIds.hasMoreElements()) { + IProfileInput input = profile.getProfileInput(inputIds.nextElement()); + ProfileInput addInput = ProfileInputFactory.create(input, params, locale); + ret.addInput(addInput); + } + + return ret; + } + +} diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java b/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java new file mode 100644 index 000000000..cac3371d0 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java @@ -0,0 +1,219 @@ +// --- 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) 2011 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.cert; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Random; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.UriInfo; + +import com.netscape.certsrv.apps.CMS; +import com.netscape.certsrv.base.EBaseException; +import com.netscape.certsrv.base.Nonces; +import com.netscape.certsrv.ca.ICertificateAuthority; +import com.netscape.certsrv.profile.IProfile; +import com.netscape.certsrv.profile.IProfileSubsystem; +import com.netscape.certsrv.request.IRequest; +import com.netscape.certsrv.request.IRequestQueue; +import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.servlet.processors.Processor; +import com.netscape.cms.servlet.request.CMSRequestDAO; +import com.netscape.cms.servlet.request.RequestNotFoundException; +import com.netscape.cms.servlet.request.model.CMSRequestInfo; +import com.netscape.cms.servlet.request.model.CMSRequestInfos; +import com.netscape.cms.servlet.request.model.CertEnrollmentRequest; +import com.netscape.cms.servlet.request.model.CertRequestInfo; +import com.netscape.cms.servlet.request.model.CertRequestInfos; +import com.netscape.cms.servlet.request.model.CertReviewResponse; + + +/** + * @author alee + * + */ +public class CertRequestDAO extends CMSRequestDAO { + private IRequestQueue queue; + private ICertificateAuthority ca; + IProfileSubsystem ps; + private Nonces nonces = null; + private Random random = null; + + public static final String ATTR_SERIALNO = "serialNumber"; + + public CertRequestDAO() { + super("ca"); + ca = (ICertificateAuthority) CMS.getSubsystem("ca"); + queue = ca.getRequestQueue(); + if (ca.noncesEnabled()) { + random = new Random(); + nonces = ca.getNonces(); + } + ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID); + } + + /** + * Finds list of requests matching the specified search filter. + * + * If the filter corresponds to a VLV search, then that search is executed and the pageSize + * and start parameters are used. Otherwise, the maxResults and maxTime parameters are + * used in the regularly indexed search. + * + * @param filter - ldap search filter + * @param start - start position for VLV search + * @param pageSize - page size for VLV search + * @param maxResults - max results to be returned in normal search + * @param maxTime - max time for normal search + * @param uriInfo - uri context of request + * @return collection of key request info + * @throws EBaseException + */ + + @SuppressWarnings("unchecked") + public CertRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime, + UriInfo uriInfo) throws EBaseException { + + CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); + + CertRequestInfos ret = new CertRequestInfos(); + + if (cmsInfos == null) { + ret.setRequests(null); + ret.setLinks(null); + return ret; + } + + List list = new ArrayList(); + ; + Collection cmsList = cmsInfos.getRequests(); + + // We absolutely know 100% that this list is a list + // of CertRequestInfo objects. This is because the method + // createCMSRequestInfo. Is the only one adding to it + + list = (List) cmsList; + + ret.setLinks(cmsInfos.getLinks()); + ret.setRequests(list); + + return ret; + } + + /** + * Gets info for a specific request + * + * @param id + * @return info for specific request + * @throws EBaseException + */ + public CertRequestInfo getRequest(RequestId id, UriInfo uriInfo) throws EBaseException { + IRequest request = queue.findRequest(id); + if (request == null) { + return null; + } + CertRequestInfo info = createCMSRequestInfo(request, uriInfo); + return info; + } + + /** + * Gets info for a specific request + * + * @param id + * @return info for specific request + * @throws EBaseException + */ + public CertReviewResponse reviewRequest(HttpServletRequest servletRequest, RequestId id, + UriInfo uriInfo, Locale locale) throws EBaseException { + IRequest request = queue.findRequest(id); + if (request == null) { + return null; + } + String profileId = request.getExtDataInString("profileId"); + IProfile profile = ps.getProfile(profileId); + CertReviewResponse info = CertReviewResponseFactory.create(request, profile, uriInfo, locale); + if (ca.noncesEnabled()) { + addNonce(info, servletRequest); + } + return info; + } + + private void addNonce(CertReviewResponse info, HttpServletRequest servletRequest) throws EBaseException { + if (nonces != null) { + long n = random.nextLong(); + long m = nonces.addNonce(n, Processor.getSSLClientCertificate(servletRequest)); + if ((n + m) != 0) { + info.setNonce(Long.toString(m)); + } + } + } + + /** + * Submits an enrollment request and processes it. + * + * @param data + * @return info for the request submitted. + * @throws EBaseException + * @throws ServletException + */ + public CertRequestInfos submitRequest(CertEnrollmentRequest data, HttpServletRequest request, UriInfo uriInfo, + Locale locale) throws EBaseException { + HashMap results = null; + if (data.getIsRenewal()) { + RenewalProcessor processor = new RenewalProcessor("caProfileSubmit", locale); + results = processor.processRenewal(data, request); + } else { + EnrollmentProcessor processor = new EnrollmentProcessor("caProfileSubmit", locale); + results = processor.processEnrollment(data, request); + } + + CertRequestInfos ret = new CertRequestInfos(); + ArrayList infos = new ArrayList(); + IRequest reqs[] = (IRequest[]) results.get(Processor.ARG_REQUESTS); + for (IRequest req : reqs) { + CertRequestInfo info = CertRequestInfoFactory.create(req, uriInfo); + infos.add(info); + } + // TODO - what happens if the errorCode is internal error ? + ret.setRequests(infos); + ret.setLinks(null); + + return ret; + } + + public void changeRequestState(RequestId id, HttpServletRequest request, CertReviewResponse data, + Locale locale, String op) throws EBaseException { + IRequest ireq = queue.findRequest(id); + if (ireq == null) { + throw new RequestNotFoundException(id); + } + + RequestProcessor processor = new RequestProcessor("caProfileProcess", locale); + processor.processRequest(request, data, ireq, op); + } + + @Override + public CertRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo) { + return CertRequestInfoFactory.create(request, uriInfo); + } + +} diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertRequestInfoFactory.java b/base/common/src/com/netscape/cms/servlet/cert/CertRequestInfoFactory.java new file mode 100644 index 000000000..3320d946a --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/cert/CertRequestInfoFactory.java @@ -0,0 +1,83 @@ +// --- 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) 2012 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- + +package com.netscape.cms.servlet.cert; + +import java.math.BigInteger; + +import javax.ws.rs.Path; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; + +import netscape.security.x509.X509CertImpl; + +import org.apache.commons.lang.StringUtils; + +import com.netscape.certsrv.profile.IEnrollProfile; +import com.netscape.certsrv.request.IRequest; +import com.netscape.certsrv.request.RequestId; +import com.netscape.certsrv.request.RequestStatus; +import com.netscape.cms.servlet.request.CertRequestResource; +import com.netscape.cms.servlet.request.model.CertRequestInfo; + +public class CertRequestInfoFactory { + + public static CertRequestInfo create(IRequest request, UriInfo uriInfo) { + + CertRequestInfo info = new CertRequestInfo(); + + String requestType = request.getRequestType(); + RequestStatus requestStatus = request.getRequestStatus(); + + info.setRequestType(requestType); + info.setRequestStatus(requestStatus); + + info.setCertRequestType(request.getExtDataInString("cert_request_type")); + + Path certRequestPath = CertRequestResource.class.getAnnotation(Path.class); + RequestId requestId = request.getRequestId(); + + UriBuilder reqBuilder = uriInfo.getBaseUriBuilder(); + reqBuilder.path(certRequestPath.value() + "/" + requestId); + info.setRequestURL(reqBuilder.build().toString()); + + //Get Cert info if issued. + + String serialNoStr = null; + + if (requestType != null && requestStatus == RequestStatus.COMPLETE) { + X509CertImpl impl[] = new X509CertImpl[1]; + impl[0] = request.getExtDataInCert(IEnrollProfile.REQUEST_ISSUED_CERT); + + BigInteger serialNo; + if (impl[0] != null) { + serialNo = impl[0].getSerialNumber(); + serialNoStr = serialNo.toString(); + } + } + + if (!StringUtils.isEmpty(serialNoStr)) { + Path certPath = CertResource.class.getAnnotation(Path.class); + UriBuilder certBuilder = uriInfo.getBaseUriBuilder(); + certBuilder.path(certPath.value() + "/" + serialNoStr); + info.setCertURL(certBuilder.build().toString()); + } + + return info; + } +} diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertReviewResponseFactory.java b/base/common/src/com/netscape/cms/servlet/cert/CertReviewResponseFactory.java new file mode 100644 index 000000000..7a7c3e9f0 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/cert/CertReviewResponseFactory.java @@ -0,0 +1,175 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.cert; + +import java.util.Enumeration; +import java.util.Locale; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.core.UriInfo; + +import com.netscape.certsrv.apps.CMS; +import com.netscape.certsrv.base.EBaseException; +import com.netscape.certsrv.base.IArgBlock; +import com.netscape.certsrv.base.Nonces; +import com.netscape.certsrv.profile.EProfileException; +import com.netscape.certsrv.profile.IPolicyDefault; +import com.netscape.certsrv.profile.IProfile; +import com.netscape.certsrv.profile.IProfileInput; +import com.netscape.certsrv.profile.IProfilePolicy; +import com.netscape.certsrv.property.EPropertyException; +import com.netscape.certsrv.request.IRequest; +import com.netscape.cms.servlet.common.CMSRequest; +import com.netscape.cms.servlet.processors.Processor; +import com.netscape.cms.servlet.profile.PolicyConstraintFactory; +import com.netscape.cms.servlet.profile.PolicyDefaultFactory; +import com.netscape.cms.servlet.profile.ProfileInputFactory; +import com.netscape.cms.servlet.profile.model.PolicyConstraint; +import com.netscape.cms.servlet.profile.model.PolicyDefault; +import com.netscape.cms.servlet.profile.model.ProfileInput; +import com.netscape.cms.servlet.profile.model.ProfilePolicy; +import com.netscape.cms.servlet.profile.model.ProfilePolicySet; +import com.netscape.cms.servlet.request.model.CertReviewResponse; + +public class CertReviewResponseFactory { + + public static CertReviewResponse create(IRequest request, IProfile profile, UriInfo uriInfo, Locale locale) throws EBaseException { + CertReviewResponse ret = new CertReviewResponse(); + + if (request.getRequestType().equals("renewal")) { + ret.setIsRenewal(true); + } else { + ret.setIsRenewal(false); + } + + ret.setRequestId(request.getRequestId()); + ret.setRequestType(request.getRequestType()); + ret.setRequestStatus(request.getRequestStatus().toString()); + if (request.getRequestOwner() == null) { + ret.setRequestOwner(""); + } else { + ret.setRequestOwner(request.getRequestOwner()); + } + ret.setRequestCreationTime(request.getCreationTime().toString()); + ret.setRequestModificationTime(request.getModificationTime().toString()); + + ret.setProfileId(profile.getId()); + ret.setProfileApprovedBy(request.getExtDataInString("profileApprovedBy")); + ret.setProfileSetId(request.getExtDataInString("profileSetId")); + if (profile.isVisible()) { + ret.setProfileIsVisible("true"); + } else { + ret.setProfileIsVisible("false"); + } + + ret.setProfileName(profile.getName(locale)); + ret.setProfileDescription(profile.getDescription(locale)); + ret.setProfileRemoteHost(request.getExtDataInString("profileRemoteHost")); + ret.setProfileRemoteAddr(request.getExtDataInString("profileRemoteAddr")); + if (request.getExtDataInString("requestNotes") == null) { + ret.setRequestNotes(""); + } else { + ret.setRequestNotes(request.getExtDataInString("requestNotes")); + } + + // populate profile inputs + Enumeration inputIds = profile.getProfileInputIds(); + while (inputIds.hasMoreElements()) { + IProfileInput input = profile.getProfileInput(inputIds.nextElement()); + ProfileInput addInput = ProfileInputFactory.create(input, request, locale); + ret.addInput(addInput); + } + + String profileSetId = request.getExtDataInString("profileSetId"); + CMS.debug("createAgentCertRequestInfo: profileSetId=" + profileSetId); + Enumeration policyIds = (profileSetId != null && profileSetId.length() > 0) ? + profile.getProfilePolicyIds(profileSetId) : null; + ProfilePolicySet dataPolicySet = new ProfilePolicySet(); + + if (policyIds != null) { + while (policyIds.hasMoreElements()) { + String id = policyIds.nextElement(); + CMS.debug("policyId:" + id); + IProfilePolicy policy = profile.getProfilePolicy(profileSetId, id); + ProfilePolicy dataPolicy = new ProfilePolicy(); + + //populate defaults + IPolicyDefault def = policy.getDefault(); + PolicyDefault dataDef = PolicyDefaultFactory.create(request, locale, def); + dataPolicy.setDef(dataDef); + + //populate constraints + PolicyConstraint dataCons = PolicyConstraintFactory.create(locale, policy.getConstraint()); + dataPolicy.setConstraint(dataCons); + + dataPolicySet.addPolicy(dataPolicy); + } + } + + + ret.addProfilePolicySet(dataPolicySet); + + // TODO populate profile outputs + return ret; + } + + public static CertReviewResponse create(CMSRequest cmsReq, IProfile profile, Nonces nonces, Locale locale) + throws EPropertyException, EProfileException { + HttpServletRequest req = cmsReq.getHttpReq(); + IRequest ireq = cmsReq.getIRequest(); + IArgBlock params = cmsReq.getHttpParams(); + + CertReviewResponse ret = new CertReviewResponse(); + ret.setProfileId(profile.getId()); + ret.setRequestNotes(req.getParameter("requestNotes")); + ret.setRequestId(ireq.getRequestId()); + + if (nonces != null) { + ret.setNonce(req.getParameter(Processor.ARG_REQUEST_NONCE)); + } + + // populate profile policy values + String profileSetId = ireq.getExtDataInString("profileSetId"); + Enumeration policyIds = (profileSetId != null && profileSetId.length() > 0) ? + profile.getProfilePolicyIds(profileSetId) : null; + ProfilePolicySet dataPolicySet = new ProfilePolicySet(); + + if (policyIds != null) { + while (policyIds.hasMoreElements()) { + String id = policyIds.nextElement(); + CMS.debug("policyId:" + id); + IProfilePolicy policy = profile.getProfilePolicy(profileSetId, id); + com.netscape.cms.servlet.profile.model.ProfilePolicy dataPolicy = + new com.netscape.cms.servlet.profile.model.ProfilePolicy(); + + //populate defaults + IPolicyDefault def = policy.getDefault(); + PolicyDefault dataDef = PolicyDefaultFactory.create(params, locale, def); + dataPolicy.setDef(dataDef); + + dataPolicySet.addPolicy(dataPolicy); + CMS.debug(dataPolicy.toString()); + } + } + + ret.addProfilePolicySet(dataPolicySet); + + return ret; + } + +} diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertService.java b/base/common/src/com/netscape/cms/servlet/cert/CertService.java index 365e89977..0ccccf7bd 100644 --- a/base/common/src/com/netscape/cms/servlet/cert/CertService.java +++ b/base/common/src/com/netscape/cms/servlet/cert/CertService.java @@ -64,7 +64,6 @@ import com.netscape.cms.servlet.cert.model.CertSearchRequest; import com.netscape.cms.servlet.cert.model.CertUnrevokeRequest; import com.netscape.cms.servlet.cert.model.CertData; import com.netscape.cms.servlet.processors.Processor; -import com.netscape.cms.servlet.request.model.CertRequestDAO; import com.netscape.cms.servlet.request.model.CertRequestInfo; import com.netscape.cms.servlet.request.model.CertRetrievalRequest; import com.netscape.cmsutil.ldap.LDAPUtil; diff --git a/base/common/src/com/netscape/cms/servlet/cert/EnrollmentProcessor.java b/base/common/src/com/netscape/cms/servlet/cert/EnrollmentProcessor.java index 1d8a5695a..cfd3be05f 100644 --- a/base/common/src/com/netscape/cms/servlet/cert/EnrollmentProcessor.java +++ b/base/common/src/com/netscape/cms/servlet/cert/EnrollmentProcessor.java @@ -39,7 +39,6 @@ import com.netscape.cms.servlet.common.CMSRequest; import com.netscape.cms.servlet.profile.SSLClientCertProvider; import com.netscape.cms.servlet.profile.model.ProfileInput; import com.netscape.cms.servlet.request.model.CertEnrollmentRequest; -import com.netscape.cms.servlet.request.model.CertEnrollmentRequestFactory; public class EnrollmentProcessor extends CertProcessor { diff --git a/base/common/src/com/netscape/cms/servlet/cert/RenewalProcessor.java b/base/common/src/com/netscape/cms/servlet/cert/RenewalProcessor.java index 3714d9807..2a9f10648 100644 --- a/base/common/src/com/netscape/cms/servlet/cert/RenewalProcessor.java +++ b/base/common/src/com/netscape/cms/servlet/cert/RenewalProcessor.java @@ -45,7 +45,6 @@ import com.netscape.certsrv.request.IRequest; import com.netscape.cms.servlet.common.CMSRequest; import com.netscape.cms.servlet.profile.SSLClientCertProvider; import com.netscape.cms.servlet.request.model.CertEnrollmentRequest; -import com.netscape.cms.servlet.request.model.CertEnrollmentRequestFactory; public class RenewalProcessor extends CertProcessor { diff --git a/base/common/src/com/netscape/cms/servlet/cert/RequestProcessor.java b/base/common/src/com/netscape/cms/servlet/cert/RequestProcessor.java index 2b26773f6..b1757f130 100644 --- a/base/common/src/com/netscape/cms/servlet/cert/RequestProcessor.java +++ b/base/common/src/com/netscape/cms/servlet/cert/RequestProcessor.java @@ -52,13 +52,12 @@ import com.netscape.certsrv.request.RequestId; import com.netscape.certsrv.request.RequestStatus; import com.netscape.cms.profile.common.ProfilePolicy; import com.netscape.cms.servlet.common.CMSRequest; +import com.netscape.cms.servlet.profile.ProfileOutputFactory; import com.netscape.cms.servlet.profile.model.PolicyDefault; import com.netscape.cms.servlet.profile.model.ProfileAttribute; import com.netscape.cms.servlet.profile.model.ProfileOutput; -import com.netscape.cms.servlet.profile.model.ProfileOutputFactory; import com.netscape.cms.servlet.profile.model.ProfilePolicySet; import com.netscape.cms.servlet.request.model.CertReviewResponse; -import com.netscape.cms.servlet.request.model.CertReviewResponseFactory; public class RequestProcessor extends CertProcessor { diff --git a/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java b/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java new file mode 100644 index 000000000..2dffac22e --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java @@ -0,0 +1,271 @@ +// --- 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) 2011 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.key; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Enumeration; +import java.util.Hashtable; +import java.util.List; + +import javax.ws.rs.Path; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; + +import com.netscape.certsrv.apps.CMS; +import com.netscape.certsrv.base.EBaseException; +import com.netscape.certsrv.dbs.keydb.IKeyRecord; +import com.netscape.certsrv.dbs.keydb.IKeyRepository; +import com.netscape.certsrv.dbs.keydb.KeyId; +import com.netscape.certsrv.kra.IKeyRecoveryAuthority; +import com.netscape.certsrv.profile.IEnrollProfile; +import com.netscape.certsrv.request.IRequest; +import com.netscape.certsrv.request.RequestId; +import com.netscape.certsrv.request.RequestStatus; +import com.netscape.cms.servlet.request.CMSRequestDAO; +import com.netscape.cms.servlet.request.KeyRequestResource; +import com.netscape.cms.servlet.request.model.CMSRequestInfo; +import com.netscape.cms.servlet.request.model.CMSRequestInfos; +import com.netscape.cms.servlet.request.model.KeyArchivalRequest; +import com.netscape.cms.servlet.request.model.KeyRecoveryRequest; +import com.netscape.cms.servlet.request.model.KeyRequestInfo; +import com.netscape.cms.servlet.request.model.KeyRequestInfos; + +/** + * @author alee + * + */ +public class KeyRequestDAO extends CMSRequestDAO { + + private static String REQUEST_ARCHIVE_OPTIONS = IEnrollProfile.REQUEST_ARCHIVE_OPTIONS; + public static final String ATTR_SERIALNO = "serialNumber"; + + private IKeyRepository repo; + private IKeyRecoveryAuthority kra; + + public KeyRequestDAO() { + super("kra"); + kra = ( IKeyRecoveryAuthority ) CMS.getSubsystem( "kra" ); + repo = kra.getKeyRepository(); + } + + /** + * Finds list of requests matching the specified search filter. + * + * If the filter corresponds to a VLV search, then that search is executed and the pageSize + * and start parameters are used. Otherwise, the maxResults and maxTime parameters are + * used in the regularly indexed search. + * + * @param filter - ldap search filter + * @param start - start position for VLV search + * @param pageSize - page size for VLV search + * @param maxResults - max results to be returned in normal search + * @param maxTime - max time for normal search + * @param uriInfo - uri context of request + * @return collection of key request info + * @throws EBaseException + */ + @SuppressWarnings("unchecked") + public KeyRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime, + UriInfo uriInfo) throws EBaseException { + + CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); + KeyRequestInfos ret = new KeyRequestInfos(); + + if (cmsInfos == null) { + ret.setRequests(null); + ret.setLinks(null); + return ret; + } + + List list = new ArrayList(); + ; + Collection cmsList = cmsInfos.getRequests(); + + // We absolutely know 100% that this list is a list + // of KeyRequestInfo objects. This is because the method + // createCMSRequestInfo. Is the only one adding to it + + list = (List) cmsList; + + ret.setLinks(cmsInfos.getLinks()); + ret.setRequests(list); + + return ret; + + } + + /** + * Gets info for a specific request + * + * @param id + * @return info for specific request + * @throws EBaseException + */ + public KeyRequestInfo getRequest(RequestId id, UriInfo uriInfo) throws EBaseException { + IRequest request = queue.findRequest(id); + if (request == null) { + return null; + } + KeyRequestInfo info = createKeyRequestInfo(request, uriInfo); + return info; + } + + /** + * Submits an archival request and processes it. + * + * @param data + * @return info for the request submitted. + * @throws EBaseException + */ + public KeyRequestInfo submitRequest(KeyArchivalRequest data, UriInfo uriInfo) throws EBaseException { + String clientId = data.getClientId(); + String wrappedSecurityData = data.getWrappedPrivateData(); + String dataType = data.getDataType(); + + boolean keyExists = doesKeyExist(clientId, "active", uriInfo); + + if (keyExists == true) { + throw new EBaseException("Can not archive already active existing key!"); + } + + IRequest request = queue.newRequest(IRequest.SECURITY_DATA_ENROLLMENT_REQUEST); + + request.setExtData(REQUEST_ARCHIVE_OPTIONS, wrappedSecurityData); + request.setExtData(IRequest.SECURITY_DATA_CLIENT_ID, clientId); + request.setExtData(IRequest.SECURITY_DATA_TYPE, dataType); + + queue.processRequest(request); + + queue.markAsServiced(request); + + return createKeyRequestInfo(request, uriInfo); + } + + /** + * Submits a key recovery request. + * + * @param data + * @return info on the recovery request created + * @throws EBaseException + */ + public KeyRequestInfo submitRequest(KeyRecoveryRequest data, UriInfo uriInfo) throws EBaseException { + // set data using request.setExtData(field, data) + + String wrappedSessionKeyStr = data.getTransWrappedSessionKey(); + String wrappedPassPhraseStr = data.getSessionWrappedPassphrase(); + String nonceDataStr = data.getNonceData(); + + IRequest request = queue.newRequest(IRequest.SECURITY_DATA_RECOVERY_REQUEST); + + KeyId keyId = data.getKeyId(); + + Hashtable requestParams; + + requestParams = ((IKeyRecoveryAuthority) authority).createVolatileRequest(request.getRequestId()); + + if (requestParams == null) { + throw new EBaseException("Can not create Volatile params in submitRequest!"); + } + + CMS.debug("Create volatile params for recovery request. " + requestParams); + + if (wrappedPassPhraseStr != null) { + requestParams.put(IRequest.SECURITY_DATA_SESS_PASS_PHRASE, wrappedPassPhraseStr); + } + + if (wrappedSessionKeyStr != null) { + requestParams.put(IRequest.SECURITY_DATA_TRANS_SESS_KEY, wrappedSessionKeyStr); + } + + if (nonceDataStr != null) { + requestParams.put(IRequest.SECURITY_DATA_IV_STRING_IN, nonceDataStr); + } + + request.setExtData(ATTR_SERIALNO, keyId.toString()); + + queue.processRequest(request); + + return createKeyRequestInfo(request, uriInfo); + } + + public void approveRequest(RequestId id) throws EBaseException { + IRequest request = queue.findRequest(id); + request.setRequestStatus(RequestStatus.APPROVED); + queue.updateRequest(request); + } + + public void rejectRequest(RequestId id) throws EBaseException { + IRequest request = queue.findRequest(id); + request.setRequestStatus(RequestStatus.CANCELED); + queue.updateRequest(request); + } + + public void cancelRequest(RequestId id) throws EBaseException { + IRequest request = queue.findRequest(id); + request.setRequestStatus(RequestStatus.REJECTED); + queue.updateRequest(request); + } + + private KeyRequestInfo createKeyRequestInfo(IRequest request, UriInfo uriInfo) { + KeyRequestInfo ret = new KeyRequestInfo(); + + ret.setRequestType(request.getRequestType()); + ret.setRequestStatus(request.getRequestStatus()); + + Path keyRequestPath = KeyRequestResource.class.getAnnotation(Path.class); + RequestId rid = request.getRequestId(); + + UriBuilder reqBuilder = uriInfo.getBaseUriBuilder(); + reqBuilder.path(keyRequestPath.value() + "/" + rid); + ret.setRequestURL(reqBuilder.build().toString()); + + Path keyPath = KeyResource.class.getAnnotation(Path.class); + String kid = request.getExtDataInString("keyrecord"); + + UriBuilder keyBuilder = uriInfo.getBaseUriBuilder(); + keyBuilder.path(keyPath.value() + "/" + kid); + ret.setKeyURL(keyBuilder.build().toString()); + + return ret; + } + + @Override + public KeyRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo) { + return createKeyRequestInfo(request, uriInfo); + } + + //We only care if the key exists or not + private boolean doesKeyExist(String clientId, String keyStatus, UriInfo uriInfo) { + String state = "active"; + String filter = "(&(" + IRequest.SECURITY_DATA_CLIENT_ID + "=" + clientId + ")" + + "(" + IRequest.SECURITY_DATA_STATUS + "=" + state + "))"; + try { + Enumeration existingKeys = null; + + existingKeys = repo.searchKeys(filter, 1, 10); + if (existingKeys != null && existingKeys.hasMoreElements()) { + return true; + } + } catch (EBaseException e) { + return false; + } + + return false; + } +} diff --git a/base/common/src/com/netscape/cms/servlet/key/KeyService.java b/base/common/src/com/netscape/cms/servlet/key/KeyService.java index ffd0ef739..965723113 100644 --- a/base/common/src/com/netscape/cms/servlet/key/KeyService.java +++ b/base/common/src/com/netscape/cms/servlet/key/KeyService.java @@ -45,7 +45,6 @@ import com.netscape.cms.servlet.base.PKIService; import com.netscape.cms.servlet.key.model.KeyData; import com.netscape.cms.servlet.key.model.KeyDataInfo; import com.netscape.cms.servlet.key.model.KeyDataInfos; -import com.netscape.cms.servlet.request.model.KeyRequestDAO; import com.netscape.cms.servlet.request.model.KeyRequestInfo; import com.netscape.cms.servlet.request.model.KeyRecoveryRequest; import com.netscape.cmsutil.ldap.LDAPUtil; diff --git a/base/common/src/com/netscape/cms/servlet/profile/PolicyConstraintFactory.java b/base/common/src/com/netscape/cms/servlet/profile/PolicyConstraintFactory.java new file mode 100644 index 000000000..5ceecd4a5 --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/profile/PolicyConstraintFactory.java @@ -0,0 +1,44 @@ +// --- 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) 2012 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.profile; + +import java.util.Enumeration; +import java.util.Locale; + +import com.netscape.certsrv.profile.IPolicyConstraint; +import com.netscape.certsrv.property.Descriptor; +import com.netscape.cms.servlet.profile.model.PolicyConstraint; +import com.netscape.cms.servlet.profile.model.PolicyConstraintValue; + +public class PolicyConstraintFactory { + + public static PolicyConstraint create(Locale locale, IPolicyConstraint cons) { + PolicyConstraint ret = new PolicyConstraint(); + ret.setName(cons.getName(locale)); + ret.setText(cons.getText(locale)); + + Enumeration conNames = cons.getConfigNames(); + while (conNames.hasMoreElements()) { + String conName = conNames.nextElement(); + PolicyConstraintValue dataVal = + new PolicyConstraintValue(conName, (Descriptor) cons.getConfigDescriptor(locale, conName)); + ret.addConstraint(dataVal); + } + return ret; + } +} diff --git a/base/common/src/com/netscape/cms/servlet/profile/PolicyDefaultFactory.java b/base/common/src/com/netscape/cms/servlet/profile/PolicyDefaultFactory.java new file mode 100644 index 000000000..01c19936d --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/profile/PolicyDefaultFactory.java @@ -0,0 +1,67 @@ +// --- 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) 2012 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.profile; + +import java.util.Enumeration; +import java.util.Locale; + +import com.netscape.certsrv.base.IArgBlock; +import com.netscape.certsrv.profile.IPolicyDefault; +import com.netscape.certsrv.property.Descriptor; +import com.netscape.certsrv.property.EPropertyException; +import com.netscape.certsrv.request.IRequest; +import com.netscape.cms.servlet.profile.model.PolicyDefault; +import com.netscape.cms.servlet.profile.model.ProfileAttribute; + +public class PolicyDefaultFactory { + + public static PolicyDefault create(IRequest request, Locale locale, IPolicyDefault def) throws EPropertyException { + PolicyDefault ret = new PolicyDefault(); + ret.setName(def.getName(locale)); + ret.setText(def.getText(locale)); + + Enumeration defNames = def.getValueNames(); + while (defNames.hasMoreElements()) { + String defName = defNames.nextElement(); + ProfileAttribute attr = new ProfileAttribute( + defName, + def.getValue(defName, locale, request), + (Descriptor) def.getValueDescriptor(locale, defName)); + ret.addAttribute(attr); + } + return ret; + } + + public static PolicyDefault create(IArgBlock params, Locale locale, IPolicyDefault def) throws EPropertyException { + PolicyDefault ret = new PolicyDefault(); + ret.setName(def.getName(locale)); + ret.setText(def.getText(locale)); + + Enumeration defNames = def.getValueNames(); + while (defNames.hasMoreElements()) { + String defName = defNames.nextElement(); + ProfileAttribute attr = new ProfileAttribute( + defName, + params.getValueAsString(defName, ""), + (Descriptor) def.getValueDescriptor(locale, defName)); + ret.addAttribute(attr); + } + return ret; + } + +} diff --git a/base/common/src/com/netscape/cms/servlet/profile/ProfileInputFactory.java b/base/common/src/com/netscape/cms/servlet/profile/ProfileInputFactory.java new file mode 100644 index 000000000..1e9f4598c --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/profile/ProfileInputFactory.java @@ -0,0 +1,41 @@ +package com.netscape.cms.servlet.profile; + +import java.util.Enumeration; +import java.util.Locale; + +import com.netscape.certsrv.base.IArgBlock; +import com.netscape.certsrv.profile.EProfileException; +import com.netscape.certsrv.profile.IProfileInput; +import com.netscape.certsrv.request.IRequest; +import com.netscape.cms.servlet.profile.model.ProfileInput; + +public class ProfileInputFactory { + + public static ProfileInput create(IProfileInput input, IRequest request, Locale locale) throws EProfileException { + ProfileInput ret = new ProfileInput(); + ret.setInputId(input.getName(locale)); + Enumeration names = input.getValueNames(); + while (names.hasMoreElements()) { + String name = names.nextElement(); + String value = input.getValue(name, locale, request); + if (value != null) { + ret.setInputAttr(name, value); + } + } + return ret; + } + + public static ProfileInput create(IProfileInput input, IArgBlock params, Locale locale) throws EProfileException { + ProfileInput ret = new ProfileInput(); + ret.setInputId(input.getName(locale)); + Enumeration names = input.getValueNames(); + while (names.hasMoreElements()) { + String name = names.nextElement(); + String value = params.getValueAsString(name, null); + if (value != null) { + ret.setInputAttr(name, value); + } + } + return ret; + } +} diff --git a/base/common/src/com/netscape/cms/servlet/profile/ProfileOutputFactory.java b/base/common/src/com/netscape/cms/servlet/profile/ProfileOutputFactory.java new file mode 100644 index 000000000..e15875eff --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/profile/ProfileOutputFactory.java @@ -0,0 +1,49 @@ +//--- 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) 2012 Red Hat, Inc. +//All rights reserved. +//--- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.profile; + +import java.util.Enumeration; +import java.util.Locale; + +import com.netscape.certsrv.profile.EProfileException; +import com.netscape.certsrv.profile.IProfileOutput; +import com.netscape.certsrv.property.Descriptor; +import com.netscape.certsrv.request.IRequest; +import com.netscape.cms.servlet.profile.model.ProfileAttribute; +import com.netscape.cms.servlet.profile.model.ProfileOutput; + +public class ProfileOutputFactory { + + public static ProfileOutput create(IProfileOutput output, IRequest request, Locale locale) throws EProfileException { + ProfileOutput ret = new ProfileOutput(); + ret.setName(output.getName(locale)); + ret.setText(output.getText(locale)); + + Enumeration attrNames = output.getValueNames(); + while (attrNames.hasMoreElements()) { + String attrName = attrNames.nextElement(); + ProfileAttribute attr = new ProfileAttribute( + attrName, + output.getValue(attrName, locale, request), + (Descriptor) output.getValueDescriptor(locale, attrName)); + ret.addAttribute(attr); + } + return ret; + } + +} diff --git a/base/common/src/com/netscape/cms/servlet/profile/model/PolicyConstraintFactory.java b/base/common/src/com/netscape/cms/servlet/profile/model/PolicyConstraintFactory.java deleted file mode 100644 index bd361a752..000000000 --- a/base/common/src/com/netscape/cms/servlet/profile/model/PolicyConstraintFactory.java +++ /dev/null @@ -1,42 +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) 2012 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.profile.model; - -import java.util.Enumeration; -import java.util.Locale; - -import com.netscape.certsrv.profile.IPolicyConstraint; -import com.netscape.certsrv.property.Descriptor; - -public class PolicyConstraintFactory { - - public static PolicyConstraint create(Locale locale, IPolicyConstraint cons) { - PolicyConstraint ret = new PolicyConstraint(); - ret.setName(cons.getName(locale)); - ret.setText(cons.getText(locale)); - - Enumeration conNames = cons.getConfigNames(); - while (conNames.hasMoreElements()) { - String conName = conNames.nextElement(); - PolicyConstraintValue dataVal = - new PolicyConstraintValue(conName, (Descriptor) cons.getConfigDescriptor(locale, conName)); - ret.addConstraint(dataVal); - } - return ret; - } -} diff --git a/base/common/src/com/netscape/cms/servlet/profile/model/PolicyDefaultFactory.java b/base/common/src/com/netscape/cms/servlet/profile/model/PolicyDefaultFactory.java deleted file mode 100644 index 6b9379f0b..000000000 --- a/base/common/src/com/netscape/cms/servlet/profile/model/PolicyDefaultFactory.java +++ /dev/null @@ -1,65 +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) 2012 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.profile.model; - -import java.util.Enumeration; -import java.util.Locale; - -import com.netscape.certsrv.base.IArgBlock; -import com.netscape.certsrv.profile.IPolicyDefault; -import com.netscape.certsrv.property.Descriptor; -import com.netscape.certsrv.property.EPropertyException; -import com.netscape.certsrv.request.IRequest; - -public class PolicyDefaultFactory { - - public static PolicyDefault create(IRequest request, Locale locale, IPolicyDefault def) throws EPropertyException { - PolicyDefault ret = new PolicyDefault(); - ret.setName(def.getName(locale)); - ret.setText(def.getText(locale)); - - Enumeration defNames = def.getValueNames(); - while (defNames.hasMoreElements()) { - String defName = defNames.nextElement(); - ProfileAttribute attr = new ProfileAttribute( - defName, - def.getValue(defName, locale, request), - (Descriptor) def.getValueDescriptor(locale, defName)); - ret.addAttribute(attr); - } - return ret; - } - - public static PolicyDefault create(IArgBlock params, Locale locale, IPolicyDefault def) throws EPropertyException { - PolicyDefault ret = new PolicyDefault(); - ret.setName(def.getName(locale)); - ret.setText(def.getText(locale)); - - Enumeration defNames = def.getValueNames(); - while (defNames.hasMoreElements()) { - String defName = defNames.nextElement(); - ProfileAttribute attr = new ProfileAttribute( - defName, - params.getValueAsString(defName, ""), - (Descriptor) def.getValueDescriptor(locale, defName)); - ret.addAttribute(attr); - } - return ret; - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/profile/model/ProfileInputFactory.java b/base/common/src/com/netscape/cms/servlet/profile/model/ProfileInputFactory.java deleted file mode 100644 index 67d3e9a2c..000000000 --- a/base/common/src/com/netscape/cms/servlet/profile/model/ProfileInputFactory.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.netscape.cms.servlet.profile.model; - -import java.util.Enumeration; -import java.util.Locale; - -import com.netscape.certsrv.base.IArgBlock; -import com.netscape.certsrv.profile.EProfileException; -import com.netscape.certsrv.profile.IProfileInput; -import com.netscape.certsrv.request.IRequest; - -public class ProfileInputFactory { - - public static ProfileInput create(IProfileInput input, IRequest request, Locale locale) throws EProfileException { - ProfileInput ret = new ProfileInput(); - ret.setInputId(input.getName(locale)); - Enumeration names = input.getValueNames(); - while (names.hasMoreElements()) { - String name = names.nextElement(); - String value = input.getValue(name, locale, request); - if (value != null) { - ret.setInputAttr(name, value); - } - } - return ret; - } - - public static ProfileInput create(IProfileInput input, IArgBlock params, Locale locale) throws EProfileException { - ProfileInput ret = new ProfileInput(); - ret.setInputId(input.getName(locale)); - Enumeration names = input.getValueNames(); - while (names.hasMoreElements()) { - String name = names.nextElement(); - String value = params.getValueAsString(name, null); - if (value != null) { - ret.setInputAttr(name, value); - } - } - return ret; - } -} diff --git a/base/common/src/com/netscape/cms/servlet/profile/model/ProfileOutputFactory.java b/base/common/src/com/netscape/cms/servlet/profile/model/ProfileOutputFactory.java deleted file mode 100644 index 93bbaa2c5..000000000 --- a/base/common/src/com/netscape/cms/servlet/profile/model/ProfileOutputFactory.java +++ /dev/null @@ -1,47 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.profile.model; - -import java.util.Enumeration; -import java.util.Locale; - -import com.netscape.certsrv.profile.EProfileException; -import com.netscape.certsrv.profile.IProfileOutput; -import com.netscape.certsrv.property.Descriptor; -import com.netscape.certsrv.request.IRequest; - -public class ProfileOutputFactory { - - public static ProfileOutput create(IProfileOutput output, IRequest request, Locale locale) throws EProfileException { - ProfileOutput ret = new ProfileOutput(); - ret.setName(output.getName(locale)); - ret.setText(output.getText(locale)); - - Enumeration attrNames = output.getValueNames(); - while (attrNames.hasMoreElements()) { - String attrName = attrNames.nextElement(); - ProfileAttribute attr = new ProfileAttribute( - attrName, - output.getValue(attrName, locale, request), - (Descriptor) output.getValueDescriptor(locale, attrName)); - ret.addAttribute(attr); - } - return ret; - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java b/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java new file mode 100644 index 000000000..5d1df774d --- /dev/null +++ b/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java @@ -0,0 +1,168 @@ +// --- 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) 2011 Red Hat, Inc. +// All rights reserved. +// --- END COPYRIGHT BLOCK --- +package com.netscape.cms.servlet.request; + +import java.net.URI; +import java.util.ArrayList; +import java.util.List; + +import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; + +import com.netscape.certsrv.apps.CMS; +import com.netscape.certsrv.authority.IAuthority; +import com.netscape.certsrv.base.EBaseException; +import com.netscape.certsrv.request.IRequest; +import com.netscape.certsrv.request.IRequestList; +import com.netscape.certsrv.request.IRequestQueue; +import com.netscape.certsrv.request.IRequestVirtualList; +import com.netscape.certsrv.request.RequestId; +import com.netscape.cms.servlet.base.model.Link; +import com.netscape.cms.servlet.request.model.CMSRequestInfo; +import com.netscape.cms.servlet.request.model.CMSRequestInfos; + +/** + * @author alee + * + */ + +public abstract class CMSRequestDAO { + protected IRequestQueue queue; + protected IAuthority authority; + + private String[] vlvFilters = { + "(requeststate=*)", "(requesttype=enrollment)", + "(requesttype=recovery)", "(requeststate=canceled)", + "(&(requeststate=canceled)(requesttype=enrollment))", + "(&(requeststate=canceled)(requesttype=recovery))", + "(requeststate=rejected)", + "(&(requeststate=rejected)(requesttype=enrollment))", + "(&(requeststate=rejected)(requesttype=recovery))", + "(requeststate=complete)", + "(&(requeststate=complete)(requesttype=enrollment))", + "(&(requeststate=complete)(requesttype=recovery))" + }; + + public static final String ATTR_SERIALNO = "serialNumber"; + + public CMSRequestDAO(String authorityName) { + authority = (IAuthority) CMS.getSubsystem(authorityName); + queue = authority.getRequestQueue(); + } + + /** + * Finds list of requests matching the specified search filter. + * + * If the filter corresponds to a VLV search, then that search is executed and the pageSize + * and start parameters are used. Otherwise, the maxResults and maxTime parameters are + * used in the regularly indexed search. + * + * @param filter - ldap search filter + * @param start - start position for VLV search + * @param pageSize - page size for VLV search + * @param maxResults - max results to be returned in normal search + * @param maxTime - max time for normal search + * @param uriInfo - uri context of request + * @return collection of key request info + * @throws EBaseException + */ + public CMSRequestInfos listCMSRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime, + UriInfo uriInfo) throws EBaseException { + List list = new ArrayList(); + List links = new ArrayList(); + int totalSize = 0; + int current = 0; + + if (isVLVSearch(filter)) { + IRequestVirtualList vlvlist = queue.getPagedRequestsByFilter(start, false, filter, + pageSize + 1, "requestId"); + totalSize = vlvlist.getSize(); + current = vlvlist.getCurrentIndex(); + + int numRecords = (totalSize > (current + pageSize)) ? pageSize : + totalSize - current; + + for (int i = 0; i < numRecords; i++) { + IRequest request = vlvlist.getElementAt(i); + list.add(createCMSRequestInfo(request, uriInfo)); + } + } else { + // The non-vlv requests are indexed, but are not paginated. + // We should think about whether they should be, or if we need to + // limit the number of results returned. + IRequestList requests = queue.listRequestsByFilter(filter, maxResults, maxTime); + + if (requests == null) { + return null; + } + while (requests.hasMoreElements()) { + RequestId rid = requests.nextElement(); + IRequest request = queue.findRequest(rid); + if (request != null) { + list.add(createCMSRequestInfo(request, uriInfo)); + } + } + } + + // builder for vlv links + MultivaluedMap params = uriInfo.getQueryParameters(); + UriBuilder builder = uriInfo.getAbsolutePathBuilder(); + if (params.containsKey("requestState")) { + builder.queryParam("requestState", params.getFirst("requestState")); + } + if (params.containsKey("requestType")) { + builder.queryParam("requestType", params.getFirst("requestType")); + } + builder.queryParam("start", "{start}"); + builder.queryParam("pageSize", "{pageSize}"); + + // next link + if (totalSize > current + pageSize) { + int next = current + pageSize + 1; + URI nextUri = builder.clone().build(next, pageSize); + Link nextLink = new Link("next", nextUri.toString(), "application/xml"); + links.add(nextLink); + } + + // previous link + if (current > 0) { + int previous = current - pageSize; + URI previousUri = builder.clone().build(previous, pageSize); + Link previousLink = new Link("previous", previousUri.toString(), "application/xml"); + links.add(previousLink); + } + + CMSRequestInfos ret = new CMSRequestInfos(); + ret.setRequests(list); + ret.setLinks(links); + return ret; + } + + private boolean isVLVSearch(String filter) { + for (int i = 0; i < vlvFilters.length; i++) { + if (vlvFilters[i].equalsIgnoreCase(filter)) { + return true; + } + } + return false; + } + + protected abstract CMSRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo); +} + diff --git a/base/common/src/com/netscape/cms/servlet/request/CertRequestService.java b/base/common/src/com/netscape/cms/servlet/request/CertRequestService.java index e1aa56592..174b6d7fb 100644 --- a/base/common/src/com/netscape/cms/servlet/request/CertRequestService.java +++ b/base/common/src/com/netscape/cms/servlet/request/CertRequestService.java @@ -35,11 +35,11 @@ import com.netscape.certsrv.request.RequestId; import com.netscape.cms.servlet.base.BadRequestException; import com.netscape.cms.servlet.base.PKIException; import com.netscape.cms.servlet.base.PKIService; -import com.netscape.cms.servlet.request.model.CertReviewResponse; -import com.netscape.cms.servlet.request.model.CertRequestDAO; +import com.netscape.cms.servlet.cert.CertRequestDAO; +import com.netscape.cms.servlet.request.model.CertEnrollmentRequest; import com.netscape.cms.servlet.request.model.CertRequestInfo; import com.netscape.cms.servlet.request.model.CertRequestInfos; -import com.netscape.cms.servlet.request.model.CertEnrollmentRequest; +import com.netscape.cms.servlet.request.model.CertReviewResponse; import com.netscape.cmsutil.ldap.LDAPUtil; /** diff --git a/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java b/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java index e2afaf58c..188bcb23c 100644 --- a/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java +++ b/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java @@ -27,8 +27,8 @@ import com.netscape.certsrv.base.EBaseException; import com.netscape.certsrv.request.RequestId; import com.netscape.cms.servlet.base.PKIException; import com.netscape.cms.servlet.base.PKIService; +import com.netscape.cms.servlet.key.KeyRequestDAO; import com.netscape.cms.servlet.request.model.KeyArchivalRequest; -import com.netscape.cms.servlet.request.model.KeyRequestDAO; import com.netscape.cms.servlet.request.model.KeyRequestInfo; import com.netscape.cms.servlet.request.model.KeyRequestInfos; import com.netscape.cms.servlet.request.model.KeyRecoveryRequest; diff --git a/base/common/src/com/netscape/cms/servlet/request/model/CMSRequestDAO.java b/base/common/src/com/netscape/cms/servlet/request/model/CMSRequestDAO.java deleted file mode 100644 index 5ac984168..000000000 --- a/base/common/src/com/netscape/cms/servlet/request/model/CMSRequestDAO.java +++ /dev/null @@ -1,166 +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) 2011 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.request.model; - -import java.net.URI; -import java.util.ArrayList; -import java.util.List; - -import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import com.netscape.certsrv.apps.CMS; -import com.netscape.certsrv.authority.IAuthority; -import com.netscape.certsrv.base.EBaseException; -import com.netscape.certsrv.request.IRequest; -import com.netscape.certsrv.request.IRequestList; -import com.netscape.certsrv.request.IRequestQueue; -import com.netscape.certsrv.request.IRequestVirtualList; -import com.netscape.certsrv.request.RequestId; -import com.netscape.cms.servlet.base.model.Link; - -/** - * @author alee - * - */ - -public abstract class CMSRequestDAO { - protected IRequestQueue queue; - protected IAuthority authority; - - private String[] vlvFilters = { - "(requeststate=*)", "(requesttype=enrollment)", - "(requesttype=recovery)", "(requeststate=canceled)", - "(&(requeststate=canceled)(requesttype=enrollment))", - "(&(requeststate=canceled)(requesttype=recovery))", - "(requeststate=rejected)", - "(&(requeststate=rejected)(requesttype=enrollment))", - "(&(requeststate=rejected)(requesttype=recovery))", - "(requeststate=complete)", - "(&(requeststate=complete)(requesttype=enrollment))", - "(&(requeststate=complete)(requesttype=recovery))" - }; - - public static final String ATTR_SERIALNO = "serialNumber"; - - public CMSRequestDAO(String authorityName) { - authority = (IAuthority) CMS.getSubsystem(authorityName); - queue = authority.getRequestQueue(); - } - - /** - * Finds list of requests matching the specified search filter. - * - * If the filter corresponds to a VLV search, then that search is executed and the pageSize - * and start parameters are used. Otherwise, the maxResults and maxTime parameters are - * used in the regularly indexed search. - * - * @param filter - ldap search filter - * @param start - start position for VLV search - * @param pageSize - page size for VLV search - * @param maxResults - max results to be returned in normal search - * @param maxTime - max time for normal search - * @param uriInfo - uri context of request - * @return collection of key request info - * @throws EBaseException - */ - public CMSRequestInfos listCMSRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime, - UriInfo uriInfo) throws EBaseException { - List list = new ArrayList(); - List links = new ArrayList(); - int totalSize = 0; - int current = 0; - - if (isVLVSearch(filter)) { - IRequestVirtualList vlvlist = queue.getPagedRequestsByFilter(start, false, filter, - pageSize + 1, "requestId"); - totalSize = vlvlist.getSize(); - current = vlvlist.getCurrentIndex(); - - int numRecords = (totalSize > (current + pageSize)) ? pageSize : - totalSize - current; - - for (int i = 0; i < numRecords; i++) { - IRequest request = vlvlist.getElementAt(i); - list.add(createCMSRequestInfo(request, uriInfo)); - } - } else { - // The non-vlv requests are indexed, but are not paginated. - // We should think about whether they should be, or if we need to - // limit the number of results returned. - IRequestList requests = queue.listRequestsByFilter(filter, maxResults, maxTime); - - if (requests == null) { - return null; - } - while (requests.hasMoreElements()) { - RequestId rid = requests.nextElement(); - IRequest request = queue.findRequest(rid); - if (request != null) { - list.add(createCMSRequestInfo(request, uriInfo)); - } - } - } - - // builder for vlv links - MultivaluedMap params = uriInfo.getQueryParameters(); - UriBuilder builder = uriInfo.getAbsolutePathBuilder(); - if (params.containsKey("requestState")) { - builder.queryParam("requestState", params.getFirst("requestState")); - } - if (params.containsKey("requestType")) { - builder.queryParam("requestType", params.getFirst("requestType")); - } - builder.queryParam("start", "{start}"); - builder.queryParam("pageSize", "{pageSize}"); - - // next link - if (totalSize > current + pageSize) { - int next = current + pageSize + 1; - URI nextUri = builder.clone().build(next, pageSize); - Link nextLink = new Link("next", nextUri.toString(), "application/xml"); - links.add(nextLink); - } - - // previous link - if (current > 0) { - int previous = current - pageSize; - URI previousUri = builder.clone().build(previous, pageSize); - Link previousLink = new Link("previous", previousUri.toString(), "application/xml"); - links.add(previousLink); - } - - CMSRequestInfos ret = new CMSRequestInfos(); - ret.setRequests(list); - ret.setLinks(links); - return ret; - } - - private boolean isVLVSearch(String filter) { - for (int i = 0; i < vlvFilters.length; i++) { - if (vlvFilters[i].equalsIgnoreCase(filter)) { - return true; - } - } - return false; - } - - abstract CMSRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo); -} - diff --git a/base/common/src/com/netscape/cms/servlet/request/model/CertEnrollmentRequestFactory.java b/base/common/src/com/netscape/cms/servlet/request/model/CertEnrollmentRequestFactory.java deleted file mode 100644 index 36c4adfca..000000000 --- a/base/common/src/com/netscape/cms/servlet/request/model/CertEnrollmentRequestFactory.java +++ /dev/null @@ -1,51 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.request.model; - -import java.util.Enumeration; -import java.util.Locale; - -import com.netscape.certsrv.base.IArgBlock; -import com.netscape.certsrv.profile.EProfileException; -import com.netscape.certsrv.profile.IProfile; -import com.netscape.certsrv.profile.IProfileInput; -import com.netscape.cms.servlet.common.CMSRequest; -import com.netscape.cms.servlet.profile.model.ProfileInput; -import com.netscape.cms.servlet.profile.model.ProfileInputFactory; - -public class CertEnrollmentRequestFactory { - - public static CertEnrollmentRequest create(CMSRequest cmsReq, IProfile profile, Locale locale) - throws EProfileException { - IArgBlock params = cmsReq.getHttpParams(); - - CertEnrollmentRequest ret = new CertEnrollmentRequest(); - ret.setProfileId(profile.getId()); - - // populate profile inputs - Enumeration inputIds = profile.getProfileInputIds(); - while (inputIds.hasMoreElements()) { - IProfileInput input = profile.getProfileInput(inputIds.nextElement()); - ProfileInput addInput = ProfileInputFactory.create(input, params, locale); - ret.addInput(addInput); - } - - return ret; - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/request/model/CertRequestDAO.java b/base/common/src/com/netscape/cms/servlet/request/model/CertRequestDAO.java deleted file mode 100644 index 3aacf1b88..000000000 --- a/base/common/src/com/netscape/cms/servlet/request/model/CertRequestDAO.java +++ /dev/null @@ -1,215 +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) 2011 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.request.model; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Random; - -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.core.UriInfo; - -import com.netscape.certsrv.apps.CMS; -import com.netscape.certsrv.base.EBaseException; -import com.netscape.certsrv.base.Nonces; -import com.netscape.certsrv.ca.ICertificateAuthority; -import com.netscape.certsrv.profile.IProfile; -import com.netscape.certsrv.profile.IProfileSubsystem; -import com.netscape.certsrv.request.IRequest; -import com.netscape.certsrv.request.IRequestQueue; -import com.netscape.certsrv.request.RequestId; -import com.netscape.cms.servlet.cert.EnrollmentProcessor; -import com.netscape.cms.servlet.cert.RenewalProcessor; -import com.netscape.cms.servlet.cert.RequestProcessor; -import com.netscape.cms.servlet.processors.Processor; -import com.netscape.cms.servlet.request.RequestNotFoundException; - - -/** - * @author alee - * - */ -public class CertRequestDAO extends CMSRequestDAO { - private IRequestQueue queue; - private ICertificateAuthority ca; - IProfileSubsystem ps; - private Nonces nonces = null; - private Random random = null; - - public static final String ATTR_SERIALNO = "serialNumber"; - - public CertRequestDAO() { - super("ca"); - ca = (ICertificateAuthority) CMS.getSubsystem("ca"); - queue = ca.getRequestQueue(); - if (ca.noncesEnabled()) { - random = new Random(); - nonces = ca.getNonces(); - } - ps = (IProfileSubsystem) CMS.getSubsystem(IProfileSubsystem.ID); - } - - /** - * Finds list of requests matching the specified search filter. - * - * If the filter corresponds to a VLV search, then that search is executed and the pageSize - * and start parameters are used. Otherwise, the maxResults and maxTime parameters are - * used in the regularly indexed search. - * - * @param filter - ldap search filter - * @param start - start position for VLV search - * @param pageSize - page size for VLV search - * @param maxResults - max results to be returned in normal search - * @param maxTime - max time for normal search - * @param uriInfo - uri context of request - * @return collection of key request info - * @throws EBaseException - */ - - @SuppressWarnings("unchecked") - public CertRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime, - UriInfo uriInfo) throws EBaseException { - - CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); - - CertRequestInfos ret = new CertRequestInfos(); - - if (cmsInfos == null) { - ret.setRequests(null); - ret.setLinks(null); - return ret; - } - - List list = new ArrayList(); - ; - Collection cmsList = cmsInfos.getRequests(); - - // We absolutely know 100% that this list is a list - // of CertRequestInfo objects. This is because the method - // createCMSRequestInfo. Is the only one adding to it - - list = (List) cmsList; - - ret.setLinks(cmsInfos.getLinks()); - ret.setRequests(list); - - return ret; - } - - /** - * Gets info for a specific request - * - * @param id - * @return info for specific request - * @throws EBaseException - */ - public CertRequestInfo getRequest(RequestId id, UriInfo uriInfo) throws EBaseException { - IRequest request = queue.findRequest(id); - if (request == null) { - return null; - } - CertRequestInfo info = createCMSRequestInfo(request, uriInfo); - return info; - } - - /** - * Gets info for a specific request - * - * @param id - * @return info for specific request - * @throws EBaseException - */ - public CertReviewResponse reviewRequest(HttpServletRequest servletRequest, RequestId id, - UriInfo uriInfo, Locale locale) throws EBaseException { - IRequest request = queue.findRequest(id); - if (request == null) { - return null; - } - String profileId = request.getExtDataInString("profileId"); - IProfile profile = ps.getProfile(profileId); - CertReviewResponse info = CertReviewResponseFactory.create(request, profile, uriInfo, locale); - if (ca.noncesEnabled()) { - addNonce(info, servletRequest); - } - return info; - } - - private void addNonce(CertReviewResponse info, HttpServletRequest servletRequest) throws EBaseException { - if (nonces != null) { - long n = random.nextLong(); - long m = nonces.addNonce(n, Processor.getSSLClientCertificate(servletRequest)); - if ((n + m) != 0) { - info.setNonce(Long.toString(m)); - } - } - } - - /** - * Submits an enrollment request and processes it. - * - * @param data - * @return info for the request submitted. - * @throws EBaseException - * @throws ServletException - */ - public CertRequestInfos submitRequest(CertEnrollmentRequest data, HttpServletRequest request, UriInfo uriInfo, - Locale locale) throws EBaseException { - HashMap results = null; - if (data.getIsRenewal()) { - RenewalProcessor processor = new RenewalProcessor("caProfileSubmit", locale); - results = processor.processRenewal(data, request); - } else { - EnrollmentProcessor processor = new EnrollmentProcessor("caProfileSubmit", locale); - results = processor.processEnrollment(data, request); - } - - CertRequestInfos ret = new CertRequestInfos(); - ArrayList infos = new ArrayList(); - IRequest reqs[] = (IRequest[]) results.get(Processor.ARG_REQUESTS); - for (IRequest req : reqs) { - CertRequestInfo info = CertRequestInfoFactory.create(req, uriInfo); - infos.add(info); - } - // TODO - what happens if the errorCode is internal error ? - ret.setRequests(infos); - ret.setLinks(null); - - return ret; - } - - public void changeRequestState(RequestId id, HttpServletRequest request, CertReviewResponse data, - Locale locale, String op) throws EBaseException { - IRequest ireq = queue.findRequest(id); - if (ireq == null) { - throw new RequestNotFoundException(id); - } - - RequestProcessor processor = new RequestProcessor("caProfileProcess", locale); - processor.processRequest(request, data, ireq, op); - } - - @Override - public CertRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo) { - return CertRequestInfoFactory.create(request, uriInfo); - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/request/model/CertRequestInfoFactory.java b/base/common/src/com/netscape/cms/servlet/request/model/CertRequestInfoFactory.java deleted file mode 100644 index c21ea35c9..000000000 --- a/base/common/src/com/netscape/cms/servlet/request/model/CertRequestInfoFactory.java +++ /dev/null @@ -1,83 +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) 2012 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- - -package com.netscape.cms.servlet.request.model; - -import java.math.BigInteger; - -import javax.ws.rs.Path; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import netscape.security.x509.X509CertImpl; - -import org.apache.commons.lang.StringUtils; - -import com.netscape.certsrv.profile.IEnrollProfile; -import com.netscape.certsrv.request.IRequest; -import com.netscape.certsrv.request.RequestId; -import com.netscape.certsrv.request.RequestStatus; -import com.netscape.cms.servlet.cert.CertResource; -import com.netscape.cms.servlet.request.CertRequestResource; - -public class CertRequestInfoFactory { - - public static CertRequestInfo create(IRequest request, UriInfo uriInfo) { - - CertRequestInfo info = new CertRequestInfo(); - - String requestType = request.getRequestType(); - RequestStatus requestStatus = request.getRequestStatus(); - - info.setRequestType(requestType); - info.setRequestStatus(requestStatus); - - info.setCertRequestType(request.getExtDataInString("cert_request_type")); - - Path certRequestPath = CertRequestResource.class.getAnnotation(Path.class); - RequestId requestId = request.getRequestId(); - - UriBuilder reqBuilder = uriInfo.getBaseUriBuilder(); - reqBuilder.path(certRequestPath.value() + "/" + requestId); - info.setRequestURL(reqBuilder.build().toString()); - - //Get Cert info if issued. - - String serialNoStr = null; - - if (requestType != null && requestStatus == RequestStatus.COMPLETE) { - X509CertImpl impl[] = new X509CertImpl[1]; - impl[0] = request.getExtDataInCert(IEnrollProfile.REQUEST_ISSUED_CERT); - - BigInteger serialNo; - if (impl[0] != null) { - serialNo = impl[0].getSerialNumber(); - serialNoStr = serialNo.toString(); - } - } - - if (!StringUtils.isEmpty(serialNoStr)) { - Path certPath = CertResource.class.getAnnotation(Path.class); - UriBuilder certBuilder = uriInfo.getBaseUriBuilder(); - certBuilder.path(certPath.value() + "/" + serialNoStr); - info.setCertURL(certBuilder.build().toString()); - } - - return info; - } -} diff --git a/base/common/src/com/netscape/cms/servlet/request/model/CertReviewResponseFactory.java b/base/common/src/com/netscape/cms/servlet/request/model/CertReviewResponseFactory.java deleted file mode 100644 index a27437d0f..000000000 --- a/base/common/src/com/netscape/cms/servlet/request/model/CertReviewResponseFactory.java +++ /dev/null @@ -1,174 +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) 2012 Red Hat, Inc. -//All rights reserved. -//--- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.request.model; - -import java.util.Enumeration; -import java.util.Locale; - -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.core.UriInfo; - -import com.netscape.certsrv.apps.CMS; -import com.netscape.certsrv.base.EBaseException; -import com.netscape.certsrv.base.IArgBlock; -import com.netscape.certsrv.base.Nonces; -import com.netscape.certsrv.profile.EProfileException; -import com.netscape.certsrv.profile.IPolicyDefault; -import com.netscape.certsrv.profile.IProfile; -import com.netscape.certsrv.profile.IProfileInput; -import com.netscape.certsrv.profile.IProfilePolicy; -import com.netscape.certsrv.property.EPropertyException; -import com.netscape.certsrv.request.IRequest; -import com.netscape.cms.servlet.common.CMSRequest; -import com.netscape.cms.servlet.processors.Processor; -import com.netscape.cms.servlet.profile.model.PolicyConstraint; -import com.netscape.cms.servlet.profile.model.PolicyConstraintFactory; -import com.netscape.cms.servlet.profile.model.PolicyDefault; -import com.netscape.cms.servlet.profile.model.PolicyDefaultFactory; -import com.netscape.cms.servlet.profile.model.ProfileInput; -import com.netscape.cms.servlet.profile.model.ProfileInputFactory; -import com.netscape.cms.servlet.profile.model.ProfilePolicy; -import com.netscape.cms.servlet.profile.model.ProfilePolicySet; - -public class CertReviewResponseFactory { - - public static CertReviewResponse create(IRequest request, IProfile profile, UriInfo uriInfo, Locale locale) throws EBaseException { - CertReviewResponse ret = new CertReviewResponse(); - - if (request.getRequestType().equals("renewal")) { - ret.setIsRenewal(true); - } else { - ret.setIsRenewal(false); - } - - ret.setRequestId(request.getRequestId()); - ret.setRequestType(request.getRequestType()); - ret.setRequestStatus(request.getRequestStatus().toString()); - if (request.getRequestOwner() == null) { - ret.setRequestOwner(""); - } else { - ret.setRequestOwner(request.getRequestOwner()); - } - ret.setRequestCreationTime(request.getCreationTime().toString()); - ret.setRequestModificationTime(request.getModificationTime().toString()); - - ret.setProfileId(profile.getId()); - ret.setProfileApprovedBy(request.getExtDataInString("profileApprovedBy")); - ret.setProfileSetId(request.getExtDataInString("profileSetId")); - if (profile.isVisible()) { - ret.setProfileIsVisible("true"); - } else { - ret.setProfileIsVisible("false"); - } - - ret.setProfileName(profile.getName(locale)); - ret.setProfileDescription(profile.getDescription(locale)); - ret.setProfileRemoteHost(request.getExtDataInString("profileRemoteHost")); - ret.setProfileRemoteAddr(request.getExtDataInString("profileRemoteAddr")); - if (request.getExtDataInString("requestNotes") == null) { - ret.setRequestNotes(""); - } else { - ret.setRequestNotes(request.getExtDataInString("requestNotes")); - } - - // populate profile inputs - Enumeration inputIds = profile.getProfileInputIds(); - while (inputIds.hasMoreElements()) { - IProfileInput input = profile.getProfileInput(inputIds.nextElement()); - ProfileInput addInput = ProfileInputFactory.create(input, request, locale); - ret.addInput(addInput); - } - - String profileSetId = request.getExtDataInString("profileSetId"); - CMS.debug("createAgentCertRequestInfo: profileSetId=" + profileSetId); - Enumeration policyIds = (profileSetId != null && profileSetId.length() > 0) ? - profile.getProfilePolicyIds(profileSetId) : null; - ProfilePolicySet dataPolicySet = new ProfilePolicySet(); - - if (policyIds != null) { - while (policyIds.hasMoreElements()) { - String id = policyIds.nextElement(); - CMS.debug("policyId:" + id); - IProfilePolicy policy = profile.getProfilePolicy(profileSetId, id); - ProfilePolicy dataPolicy = new ProfilePolicy(); - - //populate defaults - IPolicyDefault def = policy.getDefault(); - PolicyDefault dataDef = PolicyDefaultFactory.create(request, locale, def); - dataPolicy.setDef(dataDef); - - //populate constraints - PolicyConstraint dataCons = PolicyConstraintFactory.create(locale, policy.getConstraint()); - dataPolicy.setConstraint(dataCons); - - dataPolicySet.addPolicy(dataPolicy); - } - } - - - ret.addProfilePolicySet(dataPolicySet); - - // TODO populate profile outputs - return ret; - } - - public static CertReviewResponse create(CMSRequest cmsReq, IProfile profile, Nonces nonces, Locale locale) - throws EPropertyException, EProfileException { - HttpServletRequest req = cmsReq.getHttpReq(); - IRequest ireq = cmsReq.getIRequest(); - IArgBlock params = cmsReq.getHttpParams(); - - CertReviewResponse ret = new CertReviewResponse(); - ret.setProfileId(profile.getId()); - ret.setRequestNotes(req.getParameter("requestNotes")); - ret.setRequestId(ireq.getRequestId()); - - if (nonces != null) { - ret.setNonce(req.getParameter(Processor.ARG_REQUEST_NONCE)); - } - - // populate profile policy values - String profileSetId = ireq.getExtDataInString("profileSetId"); - Enumeration policyIds = (profileSetId != null && profileSetId.length() > 0) ? - profile.getProfilePolicyIds(profileSetId) : null; - ProfilePolicySet dataPolicySet = new ProfilePolicySet(); - - if (policyIds != null) { - while (policyIds.hasMoreElements()) { - String id = policyIds.nextElement(); - CMS.debug("policyId:" + id); - IProfilePolicy policy = profile.getProfilePolicy(profileSetId, id); - com.netscape.cms.servlet.profile.model.ProfilePolicy dataPolicy = - new com.netscape.cms.servlet.profile.model.ProfilePolicy(); - - //populate defaults - IPolicyDefault def = policy.getDefault(); - PolicyDefault dataDef = PolicyDefaultFactory.create(params, locale, def); - dataPolicy.setDef(dataDef); - - dataPolicySet.addPolicy(dataPolicy); - CMS.debug(dataPolicy.toString()); - } - } - - ret.addProfilePolicySet(dataPolicySet); - - return ret; - } - -} diff --git a/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java b/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java deleted file mode 100644 index 6e9de9290..000000000 --- a/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java +++ /dev/null @@ -1,265 +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) 2011 Red Hat, Inc. -// All rights reserved. -// --- END COPYRIGHT BLOCK --- -package com.netscape.cms.servlet.request.model; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.List; - -import javax.ws.rs.Path; -import javax.ws.rs.core.UriBuilder; -import javax.ws.rs.core.UriInfo; - -import com.netscape.certsrv.apps.CMS; -import com.netscape.certsrv.base.EBaseException; -import com.netscape.certsrv.dbs.keydb.IKeyRecord; -import com.netscape.certsrv.dbs.keydb.IKeyRepository; -import com.netscape.certsrv.dbs.keydb.KeyId; -import com.netscape.certsrv.kra.IKeyRecoveryAuthority; -import com.netscape.certsrv.profile.IEnrollProfile; -import com.netscape.certsrv.request.IRequest; -import com.netscape.certsrv.request.RequestId; -import com.netscape.certsrv.request.RequestStatus; -import com.netscape.cms.servlet.key.KeyResource; -import com.netscape.cms.servlet.request.KeyRequestResource; - -/** - * @author alee - * - */ -public class KeyRequestDAO extends CMSRequestDAO { - - private static String REQUEST_ARCHIVE_OPTIONS = IEnrollProfile.REQUEST_ARCHIVE_OPTIONS; - public static final String ATTR_SERIALNO = "serialNumber"; - - private IKeyRepository repo; - private IKeyRecoveryAuthority kra; - - public KeyRequestDAO() { - super("kra"); - kra = ( IKeyRecoveryAuthority ) CMS.getSubsystem( "kra" ); - repo = kra.getKeyRepository(); - } - - /** - * Finds list of requests matching the specified search filter. - * - * If the filter corresponds to a VLV search, then that search is executed and the pageSize - * and start parameters are used. Otherwise, the maxResults and maxTime parameters are - * used in the regularly indexed search. - * - * @param filter - ldap search filter - * @param start - start position for VLV search - * @param pageSize - page size for VLV search - * @param maxResults - max results to be returned in normal search - * @param maxTime - max time for normal search - * @param uriInfo - uri context of request - * @return collection of key request info - * @throws EBaseException - */ - @SuppressWarnings("unchecked") - public KeyRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime, - UriInfo uriInfo) throws EBaseException { - - CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo); - KeyRequestInfos ret = new KeyRequestInfos(); - - if (cmsInfos == null) { - ret.setRequests(null); - ret.setLinks(null); - return ret; - } - - List list = new ArrayList(); - ; - Collection cmsList = cmsInfos.getRequests(); - - // We absolutely know 100% that this list is a list - // of KeyRequestInfo objects. This is because the method - // createCMSRequestInfo. Is the only one adding to it - - list = (List) cmsList; - - ret.setLinks(cmsInfos.getLinks()); - ret.setRequests(list); - - return ret; - - } - - /** - * Gets info for a specific request - * - * @param id - * @return info for specific request - * @throws EBaseException - */ - public KeyRequestInfo getRequest(RequestId id, UriInfo uriInfo) throws EBaseException { - IRequest request = queue.findRequest(id); - if (request == null) { - return null; - } - KeyRequestInfo info = createKeyRequestInfo(request, uriInfo); - return info; - } - - /** - * Submits an archival request and processes it. - * - * @param data - * @return info for the request submitted. - * @throws EBaseException - */ - public KeyRequestInfo submitRequest(KeyArchivalRequest data, UriInfo uriInfo) throws EBaseException { - String clientId = data.getClientId(); - String wrappedSecurityData = data.getWrappedPrivateData(); - String dataType = data.getDataType(); - - boolean keyExists = doesKeyExist(clientId, "active", uriInfo); - - if (keyExists == true) { - throw new EBaseException("Can not archive already active existing key!"); - } - - IRequest request = queue.newRequest(IRequest.SECURITY_DATA_ENROLLMENT_REQUEST); - - request.setExtData(REQUEST_ARCHIVE_OPTIONS, wrappedSecurityData); - request.setExtData(IRequest.SECURITY_DATA_CLIENT_ID, clientId); - request.setExtData(IRequest.SECURITY_DATA_TYPE, dataType); - - queue.processRequest(request); - - queue.markAsServiced(request); - - return createKeyRequestInfo(request, uriInfo); - } - - /** - * Submits a key recovery request. - * - * @param data - * @return info on the recovery request created - * @throws EBaseException - */ - public KeyRequestInfo submitRequest(KeyRecoveryRequest data, UriInfo uriInfo) throws EBaseException { - // set data using request.setExtData(field, data) - - String wrappedSessionKeyStr = data.getTransWrappedSessionKey(); - String wrappedPassPhraseStr = data.getSessionWrappedPassphrase(); - String nonceDataStr = data.getNonceData(); - - IRequest request = queue.newRequest(IRequest.SECURITY_DATA_RECOVERY_REQUEST); - - KeyId keyId = data.getKeyId(); - - Hashtable requestParams; - - requestParams = ((IKeyRecoveryAuthority) authority).createVolatileRequest(request.getRequestId()); - - if (requestParams == null) { - throw new EBaseException("Can not create Volatile params in submitRequest!"); - } - - CMS.debug("Create volatile params for recovery request. " + requestParams); - - if (wrappedPassPhraseStr != null) { - requestParams.put(IRequest.SECURITY_DATA_SESS_PASS_PHRASE, wrappedPassPhraseStr); - } - - if (wrappedSessionKeyStr != null) { - requestParams.put(IRequest.SECURITY_DATA_TRANS_SESS_KEY, wrappedSessionKeyStr); - } - - if (nonceDataStr != null) { - requestParams.put(IRequest.SECURITY_DATA_IV_STRING_IN, nonceDataStr); - } - - request.setExtData(ATTR_SERIALNO, keyId.toString()); - - queue.processRequest(request); - - return createKeyRequestInfo(request, uriInfo); - } - - public void approveRequest(RequestId id) throws EBaseException { - IRequest request = queue.findRequest(id); - request.setRequestStatus(RequestStatus.APPROVED); - queue.updateRequest(request); - } - - public void rejectRequest(RequestId id) throws EBaseException { - IRequest request = queue.findRequest(id); - request.setRequestStatus(RequestStatus.CANCELED); - queue.updateRequest(request); - } - - public void cancelRequest(RequestId id) throws EBaseException { - IRequest request = queue.findRequest(id); - request.setRequestStatus(RequestStatus.REJECTED); - queue.updateRequest(request); - } - - private KeyRequestInfo createKeyRequestInfo(IRequest request, UriInfo uriInfo) { - KeyRequestInfo ret = new KeyRequestInfo(); - - ret.setRequestType(request.getRequestType()); - ret.setRequestStatus(request.getRequestStatus()); - - Path keyRequestPath = KeyRequestResource.class.getAnnotation(Path.class); - RequestId rid = request.getRequestId(); - - UriBuilder reqBuilder = uriInfo.getBaseUriBuilder(); - reqBuilder.path(keyRequestPath.value() + "/" + rid); - ret.setRequestURL(reqBuilder.build().toString()); - - Path keyPath = KeyResource.class.getAnnotation(Path.class); - String kid = request.getExtDataInString("keyrecord"); - - UriBuilder keyBuilder = uriInfo.getBaseUriBuilder(); - keyBuilder.path(keyPath.value() + "/" + kid); - ret.setKeyURL(keyBuilder.build().toString()); - - return ret; - } - - @Override - public KeyRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo) { - return createKeyRequestInfo(request, uriInfo); - } - - //We only care if the key exists or not - private boolean doesKeyExist(String clientId, String keyStatus, UriInfo uriInfo) { - String state = "active"; - String filter = "(&(" + IRequest.SECURITY_DATA_CLIENT_ID + "=" + clientId + ")" - + "(" + IRequest.SECURITY_DATA_STATUS + "=" + state + "))"; - try { - Enumeration existingKeys = null; - - existingKeys = repo.searchKeys(filter, 1, 10); - if (existingKeys != null && existingKeys.hasMoreElements()) { - return true; - } - } catch (EBaseException e) { - return false; - } - - return false; - } -} -- cgit