summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/certsrv
diff options
context:
space:
mode:
authorEndi Sukma Dewata <edewata@redhat.com>2012-08-11 09:47:39 -0500
committerEndi Sukma Dewata <edewata@redhat.com>2012-08-15 12:07:43 -0500
commit1aa02e5207514d210e903d23e1d698b85fc29344 (patch)
tree3bd555aed82c2446208444939594aac3e3979308 /base/common/src/com/netscape/certsrv
parent3c9b8e787ccf066c38469e1fe2c119d5c410bb5e (diff)
downloadpki-1aa02e5207514d210e903d23e1d698b85fc29344.tar.gz
pki-1aa02e5207514d210e903d23e1d698b85fc29344.tar.xz
pki-1aa02e5207514d210e903d23e1d698b85fc29344.zip
Reorganized REST common classes.
The common classes used by REST client and services have been moved into the com.netscape.certsrv.<component> packages. Ticket #215
Diffstat (limited to 'base/common/src/com/netscape/certsrv')
-rw-r--r--base/common/src/com/netscape/certsrv/base/BadRequestException.java38
-rw-r--r--base/common/src/com/netscape/certsrv/base/Link.java88
-rw-r--r--base/common/src/com/netscape/certsrv/base/PKIException.java182
-rw-r--r--base/common/src/com/netscape/certsrv/base/UnauthorizedException.java44
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertData.java283
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertDataInfo.java173
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertDataInfos.java72
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertEnrollmentRequest.java321
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertNotFoundException.java63
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java85
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java89
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRequestResource.java114
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertResource.java60
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRetrievalRequest.java78
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertReviewResponse.java252
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRevokeRequest.java205
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertSearchRequest.java862
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertUnrevokeRequest.java124
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyArchivalRequest.java123
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyData.java76
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyDataInfo.java85
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyDataInfos.java87
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java155
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java61
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java89
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRequestResource.java88
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyResource.java45
-rw-r--r--base/common/src/com/netscape/certsrv/profile/PolicyConstraint.java73
-rw-r--r--base/common/src/com/netscape/certsrv/profile/PolicyConstraintValue.java61
-rw-r--r--base/common/src/com/netscape/certsrv/profile/PolicyDefault.java73
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileAttribute.java80
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileData.java147
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileDataInfo.java68
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java90
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileInput.java94
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileNotFoundException.java62
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileOutput.java84
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfilePolicy.java82
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfilePolicySet.java50
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileResource.java43
-rw-r--r--base/common/src/com/netscape/certsrv/profile/ProfileRetrievalRequest.java67
-rw-r--r--base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java88
-rw-r--r--base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java59
-rw-r--r--base/common/src/com/netscape/certsrv/request/RequestNotFoundException.java45
-rw-r--r--base/common/src/com/netscape/certsrv/system/ConfigurationRequest.java724
-rw-r--r--base/common/src/com/netscape/certsrv/system/ConfigurationResponse.java121
-rw-r--r--base/common/src/com/netscape/certsrv/system/DomainInfo.java155
-rw-r--r--base/common/src/com/netscape/certsrv/system/InstallToken.java50
-rw-r--r--base/common/src/com/netscape/certsrv/system/InstallTokenRequest.java99
-rw-r--r--base/common/src/com/netscape/certsrv/system/SecurityDomainHost.java40
-rw-r--r--base/common/src/com/netscape/certsrv/system/SecurityDomainHostList.java53
-rw-r--r--base/common/src/com/netscape/certsrv/system/SystemCertData.java270
-rw-r--r--base/common/src/com/netscape/certsrv/system/SystemCertificateResource.java25
-rw-r--r--base/common/src/com/netscape/certsrv/system/SystemConfigResource.java58
54 files changed, 6803 insertions, 0 deletions
diff --git a/base/common/src/com/netscape/certsrv/base/BadRequestException.java b/base/common/src/com/netscape/certsrv/base/BadRequestException.java
new file mode 100644
index 000000000..48face306
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/base/BadRequestException.java
@@ -0,0 +1,38 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.base;
+import javax.ws.rs.core.Response;
+
+public class BadRequestException extends PKIException {
+
+ private static final long serialVersionUID = -4784839378360933483L;
+
+ public BadRequestException(String message) {
+ super(Response.Status.BAD_REQUEST, message);
+ }
+
+ public BadRequestException(String message, Throwable cause) {
+ super(Response.Status.BAD_REQUEST, message, cause);
+ }
+
+ public BadRequestException(Data data) {
+ super(data);
+ }
+
+}
+
diff --git a/base/common/src/com/netscape/certsrv/base/Link.java b/base/common/src/com/netscape/certsrv/base/Link.java
new file mode 100644
index 000000000..427d1c275
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/base/Link.java
@@ -0,0 +1,88 @@
+// --- 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.certsrv.base;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name = "Link")
+public class Link {
+ protected String relationship;
+ protected String href;
+ protected String type;
+
+ public Link() {
+ // required for jaxb
+ }
+
+ public Link(String relationship, String href, String type) {
+ this.relationship = relationship;
+ this.href = href;
+ this.type = type;
+ }
+
+ /**
+ * @return the relationship
+ */
+ @XmlAttribute(name = "rel")
+ public String getRelationship() {
+ return relationship;
+ }
+
+ /**
+ * @param relationship the relationship to set
+ */
+ public void setRelationship(String relationship) {
+ this.relationship = relationship;
+ }
+
+ /**
+ * @return the href
+ */
+ @XmlAttribute
+ public String getHref() {
+ return href;
+ }
+
+ /**
+ * @param href the href to set
+ */
+ public void setHref(String href) {
+ this.href = href;
+ }
+
+ /**
+ * @return the type
+ */
+ @XmlAttribute
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * @param type the type to set
+ */
+ public void setType(String type) {
+ this.type = type;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/base/PKIException.java b/base/common/src/com/netscape/certsrv/base/PKIException.java
new file mode 100644
index 000000000..6afb8f72b
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/base/PKIException.java
@@ -0,0 +1,182 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.base;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.ext.ExceptionMapper;
+import javax.ws.rs.ext.Provider;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+public class PKIException extends RuntimeException {
+
+ private static final long serialVersionUID = 6000910362260369923L;
+
+ public int code;
+
+ public PKIException(String message) {
+ super(message);
+ code = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
+ }
+
+ public PKIException(int code, String message) {
+ super(message);
+ this.code = code;
+ }
+
+ public PKIException(Response.Status status, String message) {
+ super(message);
+ code = status.getStatusCode();
+ }
+
+ public PKIException(String message, Throwable cause) {
+ super(message, cause);
+ code = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
+ }
+
+ public PKIException(int code, String message, Throwable cause) {
+ super(message, cause);
+ this.code = code;
+ }
+
+ public PKIException(Response.Status status, String message, Throwable cause) {
+ super(message, cause);
+ code = status.getStatusCode();
+ }
+
+ public PKIException(Data data) {
+ super(data.message);
+ code = data.code;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public Data getData() {
+ Data data = new Data();
+ data.className = getClass().getName();
+ data.code = code;
+ data.message = getMessage();
+ return data;
+ }
+
+ @XmlRootElement(name="PKIException")
+ public static class Data {
+
+ @XmlElement(name="ClassName")
+ public String className;
+
+ @XmlElement(name="Code")
+ public int code;
+
+ @XmlElement(name="Message")
+ public String message;
+
+ @XmlElement(name="Attributes")
+ @XmlJavaTypeAdapter(MapAdapter.class)
+ public Map<String, String> attributes = new LinkedHashMap<String, String>();
+
+ public String getAttribute(String name) {
+ return attributes.get(name);
+ }
+
+ public void setAttribute(String name, String value) {
+ attributes.put(name, value);
+ }
+ }
+
+ public static class MapAdapter extends XmlAdapter<AttributeList, Map<String, String>> {
+
+ public AttributeList marshal(Map<String, String> map) {
+ AttributeList list = new AttributeList();
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ Attribute attribute = new Attribute();
+ attribute.name = entry.getKey();
+ attribute.value = entry.getValue();
+ list.attributes.add(attribute);
+ }
+ return list;
+ }
+
+ public Map<String, String> unmarshal(AttributeList list) {
+ Map<String, String> map = new LinkedHashMap<String, String>();
+ for (Attribute attribute : list.attributes) {
+ map.put(attribute.name, attribute.value);
+ }
+ return map;
+ }
+ }
+
+ public static class AttributeList {
+ @XmlElement(name="Attribute")
+ public List<Attribute> attributes = new ArrayList<Attribute>();
+ }
+
+ public static class Attribute {
+
+ @XmlAttribute
+ public String name;
+
+ @XmlValue
+ public String value;
+ }
+
+ @Provider
+ public static class Mapper implements ExceptionMapper<PKIException> {
+
+ public Response toResponse(PKIException exception) {
+ // convert PKIException into HTTP response with XML content
+ return Response
+ .status(exception.getCode())
+ .entity(exception.getData())
+ .type(MediaType.APPLICATION_XML)
+ .build();
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+ Data data = new Data();
+ data.className = PKIException.class.getName();
+ data.code = Response.Status.INTERNAL_SERVER_ERROR.getStatusCode();
+ data.message = "An error has occured";
+ data.setAttribute("attr1", "value1");
+ data.setAttribute("attr2", "value2");
+
+ JAXBContext context = JAXBContext.newInstance(Data.class);
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.marshal(data, System.out);
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/base/UnauthorizedException.java b/base/common/src/com/netscape/certsrv/base/UnauthorizedException.java
new file mode 100644
index 000000000..f82c06754
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/base/UnauthorizedException.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.certsrv.base;
+
+import javax.ws.rs.core.Response;
+
+
+/**
+ * @author Endi S. Dewata
+ */
+public class UnauthorizedException extends PKIException {
+
+ private static final long serialVersionUID = -2025082875126996556L;
+
+ public UnauthorizedException(String message) {
+ super(Response.Status.UNAUTHORIZED, message);
+ }
+
+ public UnauthorizedException(String message, Throwable cause) {
+ super(Response.Status.UNAUTHORIZED, message, cause);
+ }
+
+ public UnauthorizedException(Data data) {
+ super(data);
+ }
+
+}
+
diff --git a/base/common/src/com/netscape/certsrv/cert/CertData.java b/base/common/src/com/netscape/certsrv/cert/CertData.java
new file mode 100644
index 000000000..58f7fcd2c
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertData.java
@@ -0,0 +1,283 @@
+// --- 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.certsrv.cert;
+
+import java.io.PrintWriter;
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.resteasy.plugins.providers.atom.Link;
+
+import com.netscape.certsrv.dbs.certdb.CertId;
+import com.netscape.certsrv.dbs.certdb.CertIdAdapter;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name = "CertData")
+public class CertData {
+
+ public static Marshaller marshaller;
+ public static Unmarshaller unmarshaller;
+
+ static {
+ try {
+ marshaller = JAXBContext.newInstance(CertData.class).createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ unmarshaller = JAXBContext.newInstance(CertData.class).createUnmarshaller();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ CertId serialNumber;
+ String issuerDN;
+ String subjectDN;
+ String prettyPrint;
+ String encoded;
+ String pkcs7CertChain;
+ String notBefore;
+ String notAfter;
+ String status;
+
+ Link link;
+
+ @XmlAttribute(name="id")
+ @XmlJavaTypeAdapter(CertIdAdapter.class)
+ public CertId getSerialNumber() {
+ return serialNumber;
+ }
+
+ public void setSerialNumber(CertId serialNumber) {
+ this.serialNumber = serialNumber;
+ }
+
+ @XmlElement(name="IssuerDN")
+ public String getIssuerDN() {
+ return issuerDN;
+ }
+
+ public void setIssuerDN(String issuerDN) {
+ this.issuerDN = issuerDN;
+ }
+
+ @XmlElement(name="SubjectDN")
+ public String getSubjectDN() {
+ return subjectDN;
+ }
+
+ public void setSubjectDN(String subjectDN) {
+ this.subjectDN = subjectDN;
+ }
+
+ @XmlElement(name="PrettyPrint")
+ public String getPrettyPrint() {
+ return prettyPrint;
+ }
+
+ public void setPrettyPrint(String prettyPrint) {
+ this.prettyPrint = prettyPrint;
+ }
+
+ @XmlElement(name="Encoded")
+ public String getEncoded() {
+ return encoded;
+ }
+
+ public void setEncoded(String encoded) {
+ this.encoded = encoded;
+ }
+
+ @XmlElement(name="PKCS7CertChain")
+ public void setPkcs7CertChain(String chain) {
+ this.pkcs7CertChain = chain;
+ }
+
+ public String getPkcs7CertChain() {
+ return pkcs7CertChain;
+ }
+
+ @XmlElement(name="NotBefore")
+ public String getNotBefore() {
+ return notBefore;
+ }
+
+ public void setNotBefore(String notBefore) {
+ this.notBefore = notBefore;
+ }
+
+ @XmlElement(name="NotAfter")
+ public String getNotAfter() {
+ return notAfter;
+ }
+
+ public void setNotAfter(String notAfter) {
+ this.notAfter = notAfter;
+ }
+
+ @XmlElement(name="Status")
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ @XmlElement(name="Link")
+ public Link getLink() {
+ return link;
+ }
+
+ public void setLink(Link link) {
+ this.link = link;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((encoded == null) ? 0 : encoded.hashCode());
+ result = prime * result + ((issuerDN == null) ? 0 : issuerDN.hashCode());
+ result = prime * result + ((notAfter == null) ? 0 : notAfter.hashCode());
+ result = prime * result + ((notBefore == null) ? 0 : notBefore.hashCode());
+ result = prime * result + ((pkcs7CertChain == null) ? 0 : pkcs7CertChain.hashCode());
+ result = prime * result + ((prettyPrint == null) ? 0 : prettyPrint.hashCode());
+ result = prime * result + ((serialNumber == null) ? 0 : serialNumber.hashCode());
+ result = prime * result + ((status == null) ? 0 : status.hashCode());
+ result = prime * result + ((subjectDN == null) ? 0 : subjectDN.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CertData other = (CertData) obj;
+ if (encoded == null) {
+ if (other.encoded != null)
+ return false;
+ } else if (!encoded.equals(other.encoded))
+ return false;
+ if (issuerDN == null) {
+ if (other.issuerDN != null)
+ return false;
+ } else if (!issuerDN.equals(other.issuerDN))
+ return false;
+ if (notAfter == null) {
+ if (other.notAfter != null)
+ return false;
+ } else if (!notAfter.equals(other.notAfter))
+ return false;
+ if (notBefore == null) {
+ if (other.notBefore != null)
+ return false;
+ } else if (!notBefore.equals(other.notBefore))
+ return false;
+ if (pkcs7CertChain == null) {
+ if (other.pkcs7CertChain != null)
+ return false;
+ } else if (!pkcs7CertChain.equals(other.pkcs7CertChain))
+ return false;
+ if (prettyPrint == null) {
+ if (other.prettyPrint != null)
+ return false;
+ } else if (!prettyPrint.equals(other.prettyPrint))
+ return false;
+ if (serialNumber == null) {
+ if (other.serialNumber != null)
+ return false;
+ } else if (!serialNumber.equals(other.serialNumber))
+ return false;
+ if (status == null) {
+ if (other.status != null)
+ return false;
+ } else if (!status.equals(other.status))
+ return false;
+ if (subjectDN == null) {
+ if (other.subjectDN != null)
+ return false;
+ } else if (!subjectDN.equals(other.subjectDN))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static CertData valueOf(String string) throws Exception {
+ try {
+ return (CertData)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ StringWriter sw = new StringWriter();
+ PrintWriter out = new PrintWriter(sw, true);
+
+ out.println("-----BEGIN CERTIFICATE-----");
+ out.println("MIIB/zCCAWgCCQCtpWH58pqsejANBgkqhkiG9w0BAQUFADBEMRQwEgYDVQQKDAtF");
+ out.println("WEFNUExFLUNPTTEYMBYGCgmSJomT8ixkAQEMCHRlc3R1c2VyMRIwEAYDVQQDDAlU");
+ out.println("ZXN0IFVzZXIwHhcNMTIwNTE0MTcxNzI3WhcNMTMwNTE0MTcxNzI3WjBEMRQwEgYD");
+ out.println("VQQKDAtFWEFNUExFLUNPTTEYMBYGCgmSJomT8ixkAQEMCHRlc3R1c2VyMRIwEAYD");
+ out.println("VQQDDAlUZXN0IFVzZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAKmmiPJp");
+ out.println("Agh/gPUAZjfgJ3a8QiHvpMzZ/hZy1FVP3+2sNhCkMv+D/I8Y7AsrbJGxxvD7bTDm");
+ out.println("zQYtYx2ryGyOgY7KBRxEj/IrNVHIkJMYq5G/aIU4FAzpc6ntNSwUQBYUAamfK8U6");
+ out.println("Wo4Cp6rLePXIDE6sfGn3VX6IeSJ8U2V+vwtzAgMBAAEwDQYJKoZIhvcNAQEFBQAD");
+ out.println("gYEAY9bjcD/7Z+oX6gsJtX6Rd79E7X5IBdOdArYzHNE4vjdaQrZw6oCxrY8ffpKC");
+ out.println("0T0q5PX9I7er+hx/sQjGPMrJDEN+vFBSNrZE7sTeLRgkyiqGvChSyuG05GtGzXO4");
+ out.println("bFBr+Gwk2VF2wJvOhTXU2hN8sfkkd9clzIXuL8WCDhWk1bY=");
+ out.println("-----END CERTIFICATE-----");
+
+ CertData before = new CertData();
+ before.setSerialNumber(new CertId("12512514865863765114"));
+ before.setIssuerDN("CN=Test User,UID=testuser,O=EXAMPLE-COM");
+ before.setSubjectDN("CN=Test User,UID=testuser,O=EXAMPLE-COM");
+ before.setEncoded(sw.toString());
+
+ String string = before.toString();
+ System.out.println(string);
+
+ CertData after = CertData.valueOf(string);
+ System.out.println(before.equals(after));
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertDataInfo.java b/base/common/src/com/netscape/certsrv/cert/CertDataInfo.java
new file mode 100644
index 000000000..969e3e371
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertDataInfo.java
@@ -0,0 +1,173 @@
+// --- 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.certsrv.cert;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import org.jboss.resteasy.plugins.providers.atom.Link;
+
+import com.netscape.certsrv.dbs.certdb.CertId;
+import com.netscape.certsrv.dbs.certdb.CertIdAdapter;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name = "CertDataInfo")
+public class CertDataInfo {
+
+ public static Marshaller marshaller;
+ public static Unmarshaller unmarshaller;
+
+ static {
+ try {
+ JAXBContext context = JAXBContext.newInstance(CertDataInfo.class);
+ marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ unmarshaller = context.createUnmarshaller();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ CertId id;
+ String subjectDN;
+ String status;
+
+ Link link;
+
+ @XmlAttribute(name="id")
+ @XmlJavaTypeAdapter(CertIdAdapter.class)
+ public CertId getID() {
+ return id;
+ }
+
+ public void setID(CertId id) {
+ this.id = id;
+ }
+
+ @XmlElement(name="SubjectDN")
+ public String getSubjectDN() {
+ return subjectDN;
+ }
+
+ public void setSubjectDN(String subjectDN) {
+ this.subjectDN = subjectDN;
+ }
+
+ @XmlElement(name="Status")
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ @XmlElement(name="Link")
+ public Link getLink() {
+ return link;
+ }
+
+ public void setLink(Link link) {
+ this.link = link;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((id == null) ? 0 : id.hashCode());
+ result = prime * result + ((status == null) ? 0 : status.hashCode());
+ result = prime * result + ((subjectDN == null) ? 0 : subjectDN.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CertDataInfo other = (CertDataInfo) obj;
+ if (id == null) {
+ if (other.id != null)
+ return false;
+ } else if (!id.equals(other.id))
+ return false;
+ if (status == null) {
+ if (other.status != null)
+ return false;
+ } else if (!status.equals(other.status))
+ return false;
+ if (subjectDN == null) {
+ if (other.subjectDN != null)
+ return false;
+ } else if (!subjectDN.equals(other.subjectDN))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static CertDataInfo valueOf(String string) throws Exception {
+ try {
+ return (CertDataInfo)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ CertDataInfo before = new CertDataInfo();
+ before.setID(new CertId("12512514865863765114"));
+ before.setSubjectDN("CN=Test User,UID=testuser,O=EXAMPLE-COM");
+ before.setStatus("VALID");
+
+ String string = before.toString();
+ System.out.println(string);
+
+ CertDataInfo after = CertDataInfo.valueOf(string);
+
+ System.out.println(before.equals(after));
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java b/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java
new file mode 100644
index 000000000..475e90815
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertDataInfos.java
@@ -0,0 +1,72 @@
+//--- 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.certsrv.cert;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.jboss.resteasy.plugins.providers.atom.Link;
+
+@XmlRootElement(name = "CertDataInfos")
+public class CertDataInfos {
+
+ protected Collection<CertDataInfo> certInfos = new ArrayList<CertDataInfo>();
+ protected List<Link> links = new ArrayList<Link>();
+
+ /**
+ * @return the CertInfos
+ */
+ @XmlElementRef
+ public Collection<CertDataInfo> getCertInfos() {
+ return certInfos;
+ }
+
+ /**
+ * @param certInfos the CertInfos to set
+ */
+ public void setCertInfos(Collection<CertDataInfo> certInfos) {
+ this.certInfos = certInfos;
+ }
+
+ /**
+ * @return the links
+ */
+ @XmlElementRef
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ public void addCertData(CertDataInfo certInfo){
+ this.certInfos.add(certInfo);
+ }
+
+ public void addLink(Link link) {
+ this.links.add(link);
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertEnrollmentRequest.java b/base/common/src/com/netscape/certsrv/cert/CertEnrollmentRequest.java
new file mode 100644
index 000000000..fefef9a46
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertEnrollmentRequest.java
@@ -0,0 +1,321 @@
+// --- 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.certsrv.cert;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.certsrv.profile.ProfileInput;
+import com.netscape.certsrv.profile.ProfileOutput;
+
+/**
+ * @author jmagne
+ *
+ */
+
+@XmlRootElement(name = "CertEnrollmentRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CertEnrollmentRequest {
+
+ private static final String PROFILE_ID = "profileId";
+ private static final String RENEWAL = "renewal";
+ private static final String SERIAL_NUM = "serial_num";
+
+ @XmlElement
+ protected String profileId;
+
+ @XmlElement
+ protected boolean isRenewal;
+
+ @XmlElement
+ protected String serialNum; // used for one type of renewal
+
+ @XmlElement
+ protected String remoteHost;
+
+ @XmlElement
+ protected String remoteAddr;
+
+ @XmlElement(name = "Input")
+ protected List<ProfileInput> inputs = new ArrayList<ProfileInput>();
+
+ @XmlElement(name = "Output")
+ protected List<ProfileOutput> outputs = new ArrayList<ProfileOutput>();
+
+ public CertEnrollmentRequest() {
+ // required for jaxb
+ }
+
+ public CertEnrollmentRequest(MultivaluedMap<String, String> form) {
+ profileId = form.getFirst(PROFILE_ID);
+ String renewalStr = form.getFirst(RENEWAL);
+ serialNum = form.getFirst(SERIAL_NUM);
+ isRenewal = new Boolean(renewalStr);
+ }
+
+ /**
+ * @return the profileId
+ */
+ public String getProfileId() {
+ return profileId;
+ }
+
+ /**
+ * @param profileId the profileId to set
+ */
+
+ public void setProfileId(String profileId) {
+ this.profileId = profileId;
+ }
+
+ /**
+ * @return renewal
+ */
+
+ public boolean getIsRenewal() {
+ return isRenewal;
+ }
+
+ public void addInput(ProfileInput input) {
+ ProfileInput curInput = getInput(input.getInputId());
+ if (curInput != null) {
+ getInputs().remove(curInput);
+ }
+ getInputs().add(input);
+ }
+
+ public void deleteInput(ProfileInput input) {
+ ProfileInput curInput = getInput(input.getInputId());
+ if (curInput != null) {
+ getInputs().remove(curInput);
+ }
+ }
+
+ public ProfileInput createInput(String name) {
+
+ ProfileInput oldInput = getInput(name);
+
+ if (oldInput != null)
+ return oldInput;
+
+ ProfileInput newInput = new ProfileInput();
+ newInput.setInputId(name);
+
+ getInputs().add(newInput);
+
+ return newInput;
+ }
+
+ public ProfileInput getInput(String name) {
+
+ ProfileInput input = null;
+
+ Iterator<ProfileInput> it = getInputs().iterator();
+
+ ProfileInput curInput = null;
+ while (it.hasNext()) {
+ curInput = it.next();
+ if (curInput != null && curInput.getInputId().equals(name))
+ break;
+ }
+
+ return input;
+ }
+
+ public void addOutput(ProfileOutput output) {
+ ProfileOutput curOutput = getOutput(output.getOutputId());
+ if (curOutput != null) {
+ getOutputs().remove(curOutput);
+ }
+ getOutputs().add(output);
+ }
+
+ public void deleteOutput(ProfileOutput output) {
+ ProfileOutput curOutput = getOutput(output.getOutputId());
+ if (curOutput != null) {
+ getInputs().remove(curOutput);
+ }
+ }
+
+ public ProfileOutput getOutput(String name) {
+ ProfileOutput output = null;
+ ProfileOutput curOutput = null;
+
+ Iterator<ProfileOutput> it = getOutputs().iterator();
+ while (it.hasNext()) {
+ curOutput = it.next();
+ if (curOutput != null && curOutput.getOutputId().equals(name))
+ break;
+ }
+
+ return output;
+ }
+
+ /**
+ * @param renewal the renewal to set
+ */
+ public void setIsRenewal(boolean isRenewal) {
+ this.isRenewal = isRenewal;
+ }
+
+ public HashMap<String, String> toParams() {
+ HashMap<String, String> ret = new HashMap<String, String>();
+ ret.put("isRenewal", Boolean.valueOf(isRenewal).toString());
+ if (profileId != null) ret.put(PROFILE_ID, profileId);
+ if (serialNum != null) ret.put(SERIAL_NUM, serialNum);
+ if (remoteHost != null) ret.put("remoteHost", remoteHost);
+ if (remoteAddr != null) ret.put("remoteAddr", remoteAddr);
+
+ for (ProfileInput input: inputs) {
+ Map<String, String> attrs = input.getAttributes();
+ for (Map.Entry<String, String> entry: attrs.entrySet()) {
+ ret.put(entry.getKey(), entry.getValue());
+ }
+ }
+
+ return ret;
+ }
+
+ public static void main(String args[]) throws Exception {
+ CertEnrollmentRequest data = new CertEnrollmentRequest();
+ data.setProfileId("caUserCert");
+ data.setIsRenewal(false);
+
+ //Simulate a "caUserCert" Profile enrollment
+
+ ProfileInput certReq = data.createInput("KeyGenInput");
+ certReq.setInputAttr("cert_request_type", "crmf");
+ certReq.setInputAttr(
+ "cert_request",
+ "MIIBozCCAZ8wggEFAgQBMQp8MIHHgAECpQ4wDDEKMAgGA1UEAxMBeKaBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA2NgaPHp0jiohcP4M+ufrJOZEqH8GV+liu5JLbT8nWpkfhC+8EUBqT6g+n3qroSxIcNVGNdcsBEqs1utvpItzyslAbpdyat3WwQep1dWMzo6RHrPDuIoxNA0Yka1n3qEX4U//08cLQtUv2bYglYgN/hOCNQemLV6vZWAv0n7zelkCAwEAAakQMA4GA1UdDwEB/wQEAwIF4DAzMBUGCSsGAQUFBwUBAQwIcmVnVG9rZW4wGgYJKwYBBQUHBQECDA1hdXRoZW50aWNhdG9yoYGTMA0GCSqGSIb3DQEBBQUAA4GBAJ1VOQcaSEhdHa94s8kifVbSZ2WZeYE5//qxL6wVlEst20vq4ybj13CetnbN3+WT49Zkwp7Fg+6lALKgSk47suTg3EbbQDm+8yOrC0nc/q4PTRoHl0alMmUxIhirYc1t3xoCMqJewmjX1bNP8lpVIZAYFZo4eZCpZaiSkM5BeHhz");
+
+ ProfileInput subjectName = data.createInput("SubjectNameInput");
+ subjectName.setInputAttr("sn_uid", "jmagne");
+ subjectName.setInputAttr("sn_e", "jmagne@redhat.com");
+ subjectName.setInputAttr("sn_c", "US");
+ subjectName.setInputAttr("sn_ou", "Development");
+ subjectName.setInputAttr("sn_ou1", "IPA");
+ subjectName.setInputAttr("sn_ou2", "Dogtag");
+ subjectName.setInputAttr("sn_ou3", "CA");
+ subjectName.setInputAttr("sn_cn", "Common");
+ subjectName.setInputAttr("sn_o", "RedHat");
+
+ ProfileInput submitter = data.createInput("SubmitterInfoInput");
+ submitter.setInputAttr("requestor_name", "admin");
+ submitter.setInputAttr("requestor_email", "admin@redhat.com");
+ submitter.setInputAttr("requestor_phone", "650-555-5555");
+
+ try {
+ JAXBContext context = JAXBContext.newInstance(CertEnrollmentRequest.class);
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ marshaller.marshal(data, stream);
+
+ System.out.println("Originally marshalled enrollment object. \n");
+
+ System.out.println(stream.toString());
+
+ //Try to unmarshall
+
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(stream.toByteArray());
+ Object unmarshalled = unmarshaller.unmarshal(bais);
+
+ //Try re-marshalling, unmarshalled object to compare
+
+ stream.reset();
+
+ marshaller.marshal(unmarshalled, stream);
+
+ System.out.println("Remarshalled unmarshalled enrollment object. \n");
+
+ System.out.println(stream.toString());
+
+ } catch (JAXBException e) {
+ System.out.println(e.toString());
+ }
+ }
+
+ public String getSerialNum() {
+ return serialNum;
+ }
+
+ public void setSerialNum(String serialNum) {
+ this.serialNum = serialNum;
+ }
+
+ public List<ProfileInput> getInputs() {
+ return inputs;
+ }
+
+ public void setInputs(List<ProfileInput> inputs) {
+ this.inputs = inputs;
+ }
+
+ public String getRemoteAddr() {
+ return remoteAddr;
+ }
+
+ public void setRemoteAddr(String remoteAddr) {
+ this.remoteAddr = remoteAddr;
+ }
+
+ public String getRemoteHost() {
+ return remoteHost;
+ }
+
+ public void setRemoteHost(String remoteHost) {
+ this.remoteHost = remoteHost;
+ }
+
+ public List<ProfileOutput> getOutputs() {
+ return outputs;
+ }
+
+ public void setOutputs(List<ProfileOutput> outputs) {
+ this.outputs = outputs;
+ }
+
+ public void setRenewal(boolean isRenewal) {
+ this.isRenewal = isRenewal;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertNotFoundException.java b/base/common/src/com/netscape/certsrv/cert/CertNotFoundException.java
new file mode 100644
index 000000000..ce0962a84
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertNotFoundException.java
@@ -0,0 +1,63 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.cert;
+
+import javax.ws.rs.core.Response;
+
+import com.netscape.certsrv.base.PKIException;
+import com.netscape.certsrv.dbs.certdb.CertId;
+
+public class CertNotFoundException extends PKIException {
+
+ private static final long serialVersionUID = -4784839378360933483L;
+
+ public CertId certId;
+
+ public CertNotFoundException(CertId certId) {
+ this(certId, "Certificate ID " + certId.toHexString() + " not found");
+ }
+
+ public CertNotFoundException(CertId certId, String message) {
+ super(Response.Status.NOT_FOUND, message);
+ this.certId = certId;
+ }
+
+ public CertNotFoundException(CertId certId, String message, Throwable cause) {
+ super(Response.Status.NOT_FOUND, message, cause);
+ this.certId = certId;
+ }
+
+ public CertNotFoundException(Data data) {
+ super(data);
+ certId = new CertId(data.getAttribute("certId"));
+ }
+
+ public Data getData() {
+ Data data = super.getData();
+ data.setAttribute("certId", certId.toString());
+ return data;
+ }
+
+ public CertId getCertId() {
+ return certId;
+ }
+
+ public void setRequestId(CertId certId) {
+ this.certId = certId;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java b/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java
new file mode 100644
index 000000000..d11e94543
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java
@@ -0,0 +1,85 @@
+// --- 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.certsrv.cert;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.certsrv.dbs.certdb.CertId;
+import com.netscape.certsrv.request.CMSRequestInfo;
+
+@XmlRootElement(name = "CertRequestInfo")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CertRequestInfo extends CMSRequestInfo {
+
+ public static final String REQ_COMPLETE = "complete";
+
+ @XmlElement
+ protected String certURL;
+
+ @XmlElement
+ protected String certRequestType;
+
+ public CertRequestInfo() {
+ // required to be here for JAXB (defaults)
+ }
+
+ /**
+ * @param certRequestType to set
+ */
+
+ public void setCertRequestType(String certRequestType) {
+ this.certRequestType = certRequestType;
+ }
+
+ /**
+ * @return the certRequestType
+ */
+
+ public String getCertRequestType() {
+ return certRequestType;
+ }
+
+ /**
+ * @set the certURL
+ */
+ public void setCertURL(String certURL) {
+ this.certURL = certURL;
+ }
+
+ /**
+ * @return the certURL
+ */
+ public String getCertURL() {
+ return certURL;
+ }
+
+ /**
+ * @return the certId
+ */
+
+ public CertId getCertId() {
+ if (certURL == null) return null;
+ String id = certURL.substring(certURL.lastIndexOf("/") + 1);
+ return new CertId(id);
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java b/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java
new file mode 100644
index 000000000..028bff583
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java
@@ -0,0 +1,89 @@
+// --- 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.certsrv.cert;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.netscape.certsrv.base.Link;
+
+@XmlRootElement(name = "CertRequestInfos")
+public class CertRequestInfos {
+ protected Collection<CertRequestInfo> requests;
+ protected List<Link> links;
+
+ /**
+ * @return the requests
+ */
+ @XmlElementRef
+ public Collection<CertRequestInfo> getRequests() {
+ return requests;
+ }
+
+ /**
+ * @param requests the requests to set
+ */
+ public void setRequests(Collection<CertRequestInfo> requests) {
+ this.requests = requests;
+ }
+
+ /**
+ * @return the links
+ */
+ @XmlElementRef
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ @XmlTransient
+ public String getNext() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("next".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+
+ @XmlTransient
+ public String getPrevious() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("previous".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java b/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java
new file mode 100644
index 000000000..1a186f627
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertRequestResource.java
@@ -0,0 +1,114 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.cert;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+
+import com.netscape.certsrv.request.RequestId;
+
+@Path("")
+public interface CertRequestResource {
+
+ public static final int DEFAULT_START = 0;
+ public static final int DEFAULT_PAGESIZE = 20;
+ public static final int DEFAULT_MAXRESULTS = 100;
+ public static final int DEFAULT_MAXTIME = 10;
+
+ /**
+ * Used to generate list of cert requests based on the search parameters
+ */
+ @GET
+ @Path("agent/certrequests")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertRequestInfos listRequests(@QueryParam("requestState") String requestState,
+ @QueryParam("requestType") String requestType,
+ @DefaultValue("" + DEFAULT_START) @QueryParam("start") RequestId start,
+ @DefaultValue("" + DEFAULT_PAGESIZE) @QueryParam("pageSize") int pageSize,
+ @DefaultValue("" + DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults,
+ @DefaultValue("" + DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime);
+
+ /**
+ * Used to retrieve cert request info for a specific request
+ */
+ @GET
+ @Path("certrequests/{id}")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertRequestInfo getRequestInfo(@PathParam("id") RequestId id);
+
+ @GET
+ @Path("agent/certrequests/{id}")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertReviewResponse reviewRequest(@PathParam("id") RequestId id);
+
+ // Enrollment - used to test integration with a browser
+ @POST
+ @Path("certrequests")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
+ public CertRequestInfos enrollCert(MultivaluedMap<String, String> form);
+
+ @POST
+ @Path("certrequests")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertRequestInfos enrollCert(CertEnrollmentRequest data);
+
+ @POST
+ @Path("agent/certrequests/{id}/approve")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void approveRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+
+ @POST
+ @Path("agent/certrequests/{id}/reject")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void rejectRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+
+ @POST
+ @Path("agent/certrequests/{id}/cancel")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void cancelRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+
+ @POST
+ @Path("agent/certrequests/{id}/update")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void updateRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+
+ @POST
+ @Path("agent/certrequests/{id}/validate")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void validateRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+
+ @POST
+ @Path("agent/certrequests/{id}/unassign")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void unassignRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+
+ @POST
+ @Path("agent/certrequests/{id}/assign")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public void assignRequest(@PathParam("id") RequestId id, CertReviewResponse data);
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertResource.java b/base/common/src/com/netscape/certsrv/cert/CertResource.java
new file mode 100644
index 000000000..1d5958824
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertResource.java
@@ -0,0 +1,60 @@
+package com.netscape.certsrv.cert;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+
+import com.netscape.certsrv.dbs.certdb.CertId;
+
+@Path("")
+public interface CertResource {
+
+ public static final int DEFAULT_MAXTIME = 0;
+ public static final int DEFAULT_MAXRESULTS = 20;
+
+ @GET
+ @Path("certs")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertDataInfos listCerts(
+ @QueryParam("status") String status,
+ @DefaultValue("" + DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults,
+ @DefaultValue("" + DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime);
+
+ @POST
+ @Path("certs/search")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertDataInfos searchCerts(
+ CertSearchRequest data,
+ @QueryParam("start") Integer start,
+ @QueryParam("size") Integer size);
+
+ @GET
+ @Path("certs/{id}")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertData getCert(@PathParam("id") CertId id);
+
+ @POST
+ @Path("agent/certs/{id}/revoke-ca")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertRequestInfo revokeCACert(@PathParam("id") CertId id, CertRevokeRequest request);
+
+ @POST
+ @Path("agent/certs/{id}/revoke")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertRequestInfo revokeCert(@PathParam("id") CertId id, CertRevokeRequest request);
+
+ @POST
+ @Path("agent/certs/{id}/unrevoke")
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public CertRequestInfo unrevokeCert(@PathParam("id") CertId id, CertUnrevokeRequest request);
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRetrievalRequest.java b/base/common/src/com/netscape/certsrv/cert/CertRetrievalRequest.java
new file mode 100644
index 000000000..ac8ea079a
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertRetrievalRequest.java
@@ -0,0 +1,78 @@
+// --- 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.certsrv.cert;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import com.netscape.certsrv.dbs.certdb.CertId;
+import com.netscape.certsrv.dbs.certdb.CertIdAdapter;
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.certsrv.request.RequestIdAdapter;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name = "CertRetrievalRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CertRetrievalRequest {
+
+ private static final String CERT_ID = "certId";
+
+ @XmlElement
+ @XmlJavaTypeAdapter(CertIdAdapter.class)
+ protected CertId certId;
+
+ @XmlElement
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ protected RequestId requestId;
+
+ public CertRetrievalRequest() {
+ // required for JAXB (defaults)
+ }
+
+ public CertRetrievalRequest(MultivaluedMap<String, String> form) {
+ if (form.containsKey(CERT_ID)) {
+ certId = new CertId(form.getFirst(CERT_ID));
+ }
+ }
+
+ /**
+ * @return the CertId
+ */
+ public CertId getCertId() {
+ return certId;
+ }
+
+ /**
+ * @param CertId the CertId to set
+ */
+ public void setCertId(CertId certId) {
+ this.certId = certId;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertReviewResponse.java b/base/common/src/com/netscape/certsrv/cert/CertReviewResponse.java
new file mode 100644
index 000000000..776c90567
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertReviewResponse.java
@@ -0,0 +1,252 @@
+//--- 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.certsrv.cert;
+
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import com.netscape.certsrv.profile.PolicyDefault;
+import com.netscape.certsrv.profile.ProfileAttribute;
+import com.netscape.certsrv.profile.ProfilePolicy;
+import com.netscape.certsrv.profile.ProfilePolicySet;
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.certsrv.request.RequestIdAdapter;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CertReviewResponse extends CertEnrollmentRequest {
+
+ @XmlElement(name="ProfilePolicySet")
+ protected List<ProfilePolicySet> policySets = new ArrayList<ProfilePolicySet>();
+
+ protected String nonce;
+
+ @XmlElement
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ protected RequestId requestId;
+
+ protected String requestType;
+
+ protected String requestStatus;
+
+ protected String requestOwner;
+
+ protected String requestCreationTime;
+
+ protected String requestModificationTime;
+
+ protected String requestNotes;
+
+ protected String profileApprovedBy;
+
+ protected String profileSetId;
+
+ protected String profileIsVisible;
+
+ protected String profileName;
+
+ protected String profileDescription;
+
+ protected String profileRemoteHost;
+
+ protected String profileRemoteAddr;
+
+ public String getNonce() {
+ return nonce;
+ }
+
+ public void setNonce(String nonce) {
+ this.nonce = nonce;
+ }
+
+ public RequestId getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(RequestId requestId) {
+ this.requestId = requestId;
+ }
+
+ public String getRequestType() {
+ return requestType;
+ }
+
+ public void setRequestType(String requestType) {
+ this.requestType = requestType;
+ }
+
+ public String getRequestStatus() {
+ return requestStatus;
+ }
+
+ public void setRequestStatus(String requestStatus) {
+ this.requestStatus = requestStatus;
+ }
+
+ public String getRequestOwner() {
+ return requestOwner;
+ }
+
+ public void setRequestOwner(String requestOwner) {
+ this.requestOwner = requestOwner;
+ }
+
+ public String getRequestCreationTime() {
+ return requestCreationTime;
+ }
+
+ public void setRequestCreationTime(String requestCreationTime) {
+ this.requestCreationTime = requestCreationTime;
+ }
+
+ public String getRequestModificationTime() {
+ return requestModificationTime;
+ }
+
+ public void setRequestModificationTime(String requestModificationTime) {
+ this.requestModificationTime = requestModificationTime;
+ }
+
+ public String getRequestNotes() {
+ return requestNotes;
+ }
+
+ public void setRequestNotes(String requestNotes) {
+ this.requestNotes = requestNotes;
+ }
+
+ public String getProfileApprovedBy() {
+ return profileApprovedBy;
+ }
+
+ public void setProfileApprovedBy(String profileApprovedBy) {
+ this.profileApprovedBy = profileApprovedBy;
+ }
+
+ public String getProfileSetId() {
+ return profileSetId;
+ }
+
+ public void setProfileSetId(String profileSetId) {
+ this.profileSetId = profileSetId;
+ }
+
+ public String getProfileIsVisible() {
+ return profileIsVisible;
+ }
+
+ public void setProfileIsVisible(String profileIsVisible) {
+ this.profileIsVisible = profileIsVisible;
+ }
+
+ public String getProfileName() {
+ return profileName;
+ }
+
+ public void setProfileName(String profileName) {
+ this.profileName = profileName;
+ }
+
+ public String getProfileDescription() {
+ return profileDescription;
+ }
+
+ public void setProfileDescription(String profileDescription) {
+ this.profileDescription = profileDescription;
+ }
+
+ public String getProfileRemoteHost() {
+ return profileRemoteHost;
+ }
+
+ public void setProfileRemoteHost(String profileRemoteHost) {
+ this.profileRemoteHost = profileRemoteHost;
+ }
+
+ public String getProfileRemoteAddr() {
+ return profileRemoteAddr;
+ }
+
+ public void setProfileRemoteAddr(String profileRemoteAddr) {
+ this.profileRemoteAddr = profileRemoteAddr;
+ }
+
+ public String toString() {
+ try {
+ JAXBContext context = JAXBContext.newInstance(CertReviewResponse.class);
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ marshaller.marshal(this, stream);
+ return stream.toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public List<ProfilePolicySet> getPolicySets() {
+ return policySets;
+ }
+
+ public void setPolicySets(List<ProfilePolicySet> policySets) {
+ this.policySets = policySets;
+ }
+
+ public void addProfilePolicySet(ProfilePolicySet policySet) {
+ policySets.add(policySet);
+ }
+
+ public void removeProfilePolicySet(ProfilePolicySet policySet) {
+ policySets.remove(policySet);
+ }
+
+ @Override
+ public HashMap<String,String> toParams() {
+ HashMap<String,String> ret = super.toParams();
+
+ if (requestId != null) ret.put("requestId", requestId.toString());
+ if (requestNotes != null) ret.put("requestNotes", requestNotes);
+ if (nonce != null) ret.put("nonces", nonce);
+ if (requestType != null) ret.put("requestType", requestType);
+
+ for (ProfilePolicySet policySet: policySets) {
+ for (ProfilePolicy policy: policySet.getPolicies()) {
+ PolicyDefault def = policy.getDef();
+ List<ProfileAttribute> attrs = def.getAttributes();
+ for (ProfileAttribute attr: attrs) {
+ ret.put(attr.getName(), attr.getValue());
+ }
+ }
+ }
+ return ret;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRevokeRequest.java b/base/common/src/com/netscape/certsrv/cert/CertRevokeRequest.java
new file mode 100644
index 000000000..7b86286ce
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertRevokeRequest.java
@@ -0,0 +1,205 @@
+// --- 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.certsrv.cert;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.Date;
+
+import javax.ws.rs.FormParam;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import netscape.security.x509.RevocationReason;
+import netscape.security.x509.RevocationReasonAdapter;
+
+import com.netscape.certsrv.request.IRequest;
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.certsrv.request.RequestIdAdapter;
+import com.netscape.certsrv.util.DateAdapter;
+
+/**
+ * @author Endi S. Dewata
+ */
+@XmlRootElement(name="CertRevokeRequest")
+public class CertRevokeRequest {
+
+ public static Marshaller marshaller;
+ public static Unmarshaller unmarshaller;
+
+ static {
+ try {
+ JAXBContext context = JAXBContext.newInstance(CertRevokeRequest.class);
+ marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ unmarshaller = context.createUnmarshaller();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ RequestId requestID;
+ RevocationReason reason;
+ Date invalidityDate;
+ String comments;
+ String encoded;
+
+
+ @XmlElement(name="RequestID")
+ @FormParam("requestId")
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ public RequestId getRequestID() {
+ return requestID;
+ }
+
+ public void setRequestID(RequestId requestID) {
+ this.requestID = requestID;
+ }
+
+ @XmlElement(name="Reason")
+ @FormParam("revocationReason")
+ @XmlJavaTypeAdapter(RevocationReasonAdapter.class)
+ public RevocationReason getReason() {
+ return reason;
+ }
+
+ public void setReason(RevocationReason reason) {
+ this.reason = reason;
+ }
+
+ @XmlElement(name="InvalidityDate")
+ @FormParam("invalidityDate")
+ @XmlJavaTypeAdapter(DateAdapter.class)
+ public Date getInvalidityDate() {
+ return invalidityDate;
+ }
+
+ public void setInvalidityDate(Date invalidityDate) {
+ this.invalidityDate = invalidityDate;
+ }
+
+ @XmlElement(name="Comments")
+ @FormParam(IRequest.REQUESTOR_COMMENTS)
+ public String getComments() {
+ return comments;
+ }
+
+ public void setComments(String comments) {
+ this.comments = comments;
+ }
+
+ @XmlElement(name="Encoded")
+ @FormParam("b64eCertificate")
+ public String getEncoded() {
+ return encoded;
+ }
+
+ public void setEncoded(String encoded) {
+ this.encoded = encoded;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((comments == null) ? 0 : comments.hashCode());
+ result = prime * result + ((encoded == null) ? 0 : encoded.hashCode());
+ result = prime * result + ((invalidityDate == null) ? 0 : invalidityDate.hashCode());
+ result = prime * result + ((reason == null) ? 0 : reason.hashCode());
+ result = prime * result + ((requestID == null) ? 0 : requestID.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CertRevokeRequest other = (CertRevokeRequest) obj;
+ if (comments == null) {
+ if (other.comments != null)
+ return false;
+ } else if (!comments.equals(other.comments))
+ return false;
+ if (encoded == null) {
+ if (other.encoded != null)
+ return false;
+ } else if (!encoded.equals(other.encoded))
+ return false;
+ if (invalidityDate == null) {
+ if (other.invalidityDate != null)
+ return false;
+ } else if (!invalidityDate.equals(other.invalidityDate))
+ return false;
+ if (reason == null) {
+ if (other.reason != null)
+ return false;
+ } else if (!reason.equals(other.reason))
+ return false;
+ if (requestID == null) {
+ if (other.requestID != null)
+ return false;
+ } else if (!requestID.equals(other.requestID))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static CertRevokeRequest valueOf(String string) throws Exception {
+ try {
+ return (CertRevokeRequest)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ CertRevokeRequest before = new CertRevokeRequest();
+ before.setRequestID(new RequestId("42323234"));
+ before.setReason(RevocationReason.CERTIFICATE_HOLD);
+ before.setInvalidityDate(new Date());
+ before.setComments("test");
+ before.setEncoded("test");
+
+ String string = before.toString();
+ System.out.println(string);
+
+ CertRevokeRequest after = CertRevokeRequest.valueOf(string);
+
+ System.out.println(before.equals(after));
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertSearchRequest.java b/base/common/src/com/netscape/certsrv/cert/CertSearchRequest.java
new file mode 100644
index 000000000..5ae8596ba
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertSearchRequest.java
@@ -0,0 +1,862 @@
+//--- 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 ---
+
+// TODO: This class is brute force. Come up with a way to divide these search filter entities into
+// smaller classes
+package com.netscape.certsrv.cert;
+
+import java.io.Reader;
+import java.util.Calendar;
+import java.util.StringTokenizer;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.cmsutil.ldap.LDAPUtil;
+
+/**
+ * @author jmagne
+ *
+ */
+@XmlRootElement(name = "CertSearchRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CertSearchRequest {
+
+ private final static String MATCH_EXACTLY = "exact";
+ //Serial Number
+ @XmlElement
+ protected boolean serialNumberRangeInUse;
+
+ @XmlElement
+ protected String serialTo;
+
+ @XmlElement
+ protected String serialFrom;
+
+ //Subject Name
+ @XmlElement
+ protected boolean subjectInUse;
+
+ @XmlElement
+ protected String eMail;
+
+ @XmlElement
+ protected String commonName;
+
+ @XmlElement
+ protected String userID;
+
+ @XmlElement
+ protected String orgUnit;
+
+ @XmlElement
+ protected String org;
+
+ @XmlElement
+ protected String locality;
+
+ @XmlElement
+ protected String state;
+
+ @XmlElement
+ protected String country;
+
+ @XmlElement
+ protected boolean matchExactly;
+
+ //Revoked By
+
+ @XmlElement
+ protected String revokedBy;
+
+ //Revoked On
+
+ @XmlElement
+ protected String revokedOnFrom;
+
+ @XmlElement
+ protected String revokedOnTo;
+
+ //Revocation Reason
+
+ @XmlElement
+ protected String revocationReason;
+
+ //Issued By
+
+ @XmlElement
+ protected String issuedBy;
+
+ //Issued On
+
+ @XmlElement
+ protected String issuedOnFrom;
+
+ @XmlElement
+ protected String issuedOnTo;
+
+ //Valid Not Before
+
+ @XmlElement
+ protected String validNotBeforeFrom;
+
+ @XmlElement
+ protected String validNotBeforeTo;
+
+ //Valid Not After
+
+ @XmlElement
+ protected String validNotAfterFrom;
+
+ @XmlElement
+ protected String validNotAfterTo;
+
+ //Validity Length
+
+ @XmlElement
+ protected String validityOperation;
+
+ @XmlElement
+ protected String validityCount;
+
+ @XmlElement
+ protected String validityUnit;
+
+ // Cert Type
+
+ @XmlElement
+ protected String certTypeSubEmailCA;
+
+ @XmlElement
+ protected String certTypeSubSSLCA;
+
+ @XmlElement
+ protected String certTypeSecureEmail;
+
+ @XmlElement
+ protected String certTypeSSLClient;
+
+ @XmlElement
+ protected String certTypeSSLServer;
+
+ //Revoked By
+ @XmlElement
+ protected boolean revokedByInUse;
+
+ //Revoked On
+ @XmlElement
+ protected boolean revokedOnInUse;
+
+ @XmlElement
+ protected boolean revocationReasonInUse;
+
+ @XmlElement
+ protected boolean issuedByInUse;
+
+ @XmlElement
+ protected boolean issuedOnInUse;
+
+ @XmlElement
+ protected boolean validNotBeforeInUse;
+
+ @XmlElement
+ protected boolean validNotAfterInUse;
+
+ @XmlElement
+ protected boolean validityLengthInUse;
+
+ @XmlElement
+ protected boolean certTypeInUse;
+
+ //Boolean values
+ public boolean getSerialNumberRangeInUse() {
+ return serialNumberRangeInUse;
+ }
+
+ public void setSerialNumberRangeInUse(boolean serialNumberRangeInUse) {
+ this.serialNumberRangeInUse = serialNumberRangeInUse;
+ }
+
+ public boolean getSubjectInUse() {
+ return subjectInUse;
+ }
+
+ public void setSubjectInUse(boolean subjectInUse) {
+ this.subjectInUse = subjectInUse;
+ }
+
+ public boolean getRevokedByInUse() {
+ return revokedByInUse;
+ }
+
+ public void setRevokedByInUse(boolean revokedByInUse) {
+ this.revokedByInUse = revokedByInUse;
+ }
+
+ public boolean getRevokedOnInUse() {
+ return revokedOnInUse;
+ }
+
+ public void setRevokedOnInUse(boolean revokedOnInUse) {
+ this.revokedOnInUse = revokedOnInUse;
+ }
+
+ public void setRevocationReasonInUse(boolean revocationReasonInUse) {
+ this.revocationReasonInUse = revocationReasonInUse;
+ }
+
+ public boolean getRevocationReasonInUse() {
+ return revocationReasonInUse;
+ }
+
+ public void setIssuedByInUse(boolean issuedByInUse) {
+ this.issuedByInUse = issuedByInUse;
+ }
+
+ public boolean getIssuedByInUse() {
+ return issuedByInUse;
+ }
+
+ public void setIssuedOnInUse(boolean issuedOnInUse) {
+ this.issuedOnInUse = issuedOnInUse;
+ }
+
+ public boolean getIssuedOnInUse() {
+ return issuedOnInUse;
+ }
+
+ public void setValidNotBeforeInUse(boolean validNotBeforeInUse) {
+ this.validNotBeforeInUse = validNotBeforeInUse;
+ }
+
+ public boolean getValidNotBeforeInUse() {
+ return validNotBeforeInUse;
+ }
+
+ public void setValidNotAfterInUse(boolean validNotAfterInUse) {
+ this.validNotAfterInUse = validNotAfterInUse;
+ }
+
+ public boolean getValidNotAfterInUse() {
+ return validNotAfterInUse;
+ }
+
+ public void setValidityLengthInUse(boolean validityLengthInUse) {
+ this.validityLengthInUse = validityLengthInUse;
+ }
+
+ public boolean getValidityLengthInUse() {
+ return validityLengthInUse;
+ }
+
+ public void setCertTypeInUse(boolean certTypeInUse) {
+ this.certTypeInUse = certTypeInUse;
+ }
+
+ public boolean getCertTypeInUse() {
+ return certTypeInUse;
+ }
+
+ //Actual Values
+
+ public String getSerialTo() {
+ return serialTo;
+ }
+
+ public void setSerialTo(String serialTo) {
+ this.serialTo = serialTo;
+ }
+
+ public String getSerialFrom() {
+ return serialFrom;
+ }
+
+ public void setSerialFrom(String serialFrom) {
+ this.serialFrom = serialFrom;
+ }
+
+ //Subject Name
+
+ public String getEmail() {
+ return eMail;
+ }
+
+ public void setEmail(String email) {
+ this.eMail = email;
+ }
+
+ public String getCommonName() {
+ return commonName;
+ }
+
+ public void setCommonName(String commonName) {
+ this.commonName = commonName;
+ }
+
+ public String getUserID() {
+ return userID;
+ }
+
+ public void setUserID(String userID) {
+ this.userID = userID;
+ }
+
+ public String getOrgUnit() {
+ return orgUnit;
+ }
+
+ public void setOrgUnit(String orgUnit) {
+ this.orgUnit = orgUnit;
+ }
+
+ public String getOrg() {
+ return org;
+ }
+
+ public void setOrg(String org) {
+ this.org = org;
+ }
+
+ public String getLocality() {
+ return locality;
+ }
+
+ public void setLocality(String locality) {
+ this.locality = locality;
+ }
+
+ public String getState() {
+ return state;
+ }
+
+ public void setState(String state) {
+ this.state = state;
+ }
+
+ public String getCountry() {
+ return country;
+ }
+
+ public void setCountry(String country) {
+ this.country = country;
+ }
+
+ public boolean getMatchExactly() {
+ return matchExactly;
+ }
+
+ public void setMatchExactly(boolean matchExactly) {
+ this.matchExactly = matchExactly;
+ }
+
+ //Revoked On
+
+ public String getRevokedOnTo() {
+ return revokedOnTo;
+ }
+
+ public void setRevokedOnTo(String revokedOnTo) {
+ this.revokedOnTo = revokedOnTo;
+ }
+
+ public String getRevokedOnFrom() {
+ return revokedOnFrom;
+ }
+
+ public void setRevokedOnFrom(String revokedOnFrom) {
+ this.revokedOnFrom = revokedOnFrom;
+ }
+
+ //Revoked By
+
+ public String getRevokedBy() {
+ return revokedBy;
+ }
+
+ public void setRevokedBy(String revokedBy) {
+ this.revokedBy = revokedBy;
+ }
+
+ //Revocation Reason
+
+ public String getRevocationReason() {
+ return revocationReason;
+ }
+
+ public void setRevocationReason(String revocationReason) {
+ this.revocationReason = revocationReason;
+ }
+
+ //Issued By
+
+ public String getIssuedBy() {
+ return issuedBy;
+ }
+
+ public void setIssuedBy(String issuedBy) {
+ this.issuedBy = issuedBy;
+ }
+
+ //Issued On
+
+ public String getIssuedOnFrom() {
+ return issuedOnFrom;
+ }
+
+ public void setIssuedOnFrom(String issuedOnFrom) {
+ this.issuedOnFrom = issuedOnFrom;
+ }
+
+ public String getIssuedOnTo() {
+ return getIssuedOnTo();
+ }
+
+ //Valid Not After
+
+ public String getValidNotAfterFrom() {
+ return validNotAfterFrom;
+ }
+
+ public void setValidNotAfterFrom(String validNotAfterFrom) {
+ this.validNotAfterFrom = validNotAfterFrom;
+ }
+
+ public String getValidNotAfterTo() {
+ return validNotAfterTo;
+ }
+
+ public void setValidNotAfterTo(String validNotAfterTo) {
+ this.validNotAfterTo = validNotAfterTo;
+ }
+
+ //Valid Not Before
+
+ public String getValidNotBeforeFrom() {
+ return validNotBeforeFrom;
+ }
+
+ public void setValidNotBeforeFrom(String validNotBeforeFrom) {
+ this.validNotBeforeFrom = validNotBeforeFrom;
+ }
+
+ public String getValidNotBeforeTo() {
+ return validNotBeforeTo;
+ }
+
+ public void setValidNotBeforeTo(String validNotBeforeTo) {
+ this.validNotBeforeTo = validNotBeforeTo;
+ }
+
+ //Validity Length
+
+ public String getValidityOperation() {
+ return validityOperation;
+ }
+
+ public void setValidityOperation(String validityOperation) {
+ this.validityOperation = validityOperation;
+ }
+
+ public String getValidityUnit() {
+ return validityUnit;
+ }
+
+ public void setValidityUnit(String validityUnit) {
+ this.validityUnit = validityUnit;
+ }
+
+ public String getValidityCount() {
+ return validityCount;
+ }
+
+ public void setValidityCount(String validityCount) {
+ this.validityCount = validityCount;
+ }
+
+ //Cert Type
+
+ public String getCertTypeSubEmailCA() {
+ return certTypeSubEmailCA;
+ }
+
+ public void setCertTypeSubEmailCA(String certTypeSubEmailCA) {
+ this.certTypeSubEmailCA = certTypeSubEmailCA;
+ }
+
+ public String getCertTypeSubSSLCA() {
+ return certTypeSubSSLCA;
+ }
+
+ public void setCertTypeSubSSLCA(String certTypeSubSSLCA) {
+ this.certTypeSubSSLCA = certTypeSubSSLCA;
+ }
+
+ public String getCertTypeSecureEmail() {
+ return certTypeSecureEmail;
+ }
+
+ public void setCertTypeSecureEmail(String certTypeSecureEmail) {
+ this.certTypeSecureEmail = certTypeSecureEmail;
+ }
+
+ public String getCertTypeSSLClient() {
+ return certTypeSSLClient;
+ }
+
+ public void setCertTypeSSLClient(String SSLClient) {
+ this.certTypeSSLClient = SSLClient;
+ }
+
+ public String getCertTypeSSLServer() {
+ return certTypeSSLServer;
+ }
+
+ public void setCertTypeSSLServer(String SSLServer) {
+ this.certTypeSSLServer = SSLServer;
+ }
+
+ public CertSearchRequest() {
+ // required for JAXB (defaults)
+ }
+
+ public void buildFromServletRequest(HttpServletRequest req) {
+ //Set values from the servlet request
+ if (req == null) {
+ return;
+ }
+ }
+
+ public CertSearchRequest(MultivaluedMap<String, String> form) {
+ }
+
+ public String buildFilter() {
+ StringBuffer filter = new StringBuffer();
+ buildSerialNumberRangeFilter(filter);
+ buildSubjectFilter(filter);
+ buildRevokedByFilter(filter);
+ buildRevokedOnFilter(filter);
+ buildRevocationReasonFilter(filter);
+ buildIssuedByFilter(filter);
+ buildIssuedOnFilter(filter);
+ buildValidNotBeforeFilter(filter);
+ buildValidNotAfterFilter(filter);
+ buildValidityLengthFilter(filter);
+ buildCertTypeFilter(filter);
+
+ searchFilter = filter.toString();
+
+ if (searchFilter != null && !searchFilter.equals("")) {
+ searchFilter = "(&" + searchFilter + ")";
+ }
+
+ return searchFilter;
+ }
+
+ private void buildSerialNumberRangeFilter(StringBuffer filter) {
+
+ if (!getSerialNumberRangeInUse()) {
+ return;
+ }
+ boolean changed = false;
+ String serialFrom = getSerialFrom();
+ if (serialFrom != null && !serialFrom.equals("")) {
+ filter.append("(certRecordId>=" + LDAPUtil.escapeFilter(serialFrom) + ")");
+ changed = true;
+ }
+ String serialTo = getSerialTo();
+ if (serialTo != null && !serialTo.equals("")) {
+ filter.append("(certRecordId<=" + LDAPUtil.escapeFilter(serialTo) + ")");
+ changed = true;
+ }
+ if (!changed) {
+ filter.append("(certRecordId=*)");
+ }
+
+ }
+
+ private void buildSubjectFilter(StringBuffer filter) {
+ if (!getSubjectInUse()) {
+ return;
+ }
+ StringBuffer lf = new StringBuffer();
+
+ String matchStr = null;
+ boolean match = getMatchExactly();
+
+ if (match == true) {
+ matchStr = MATCH_EXACTLY;
+ }
+
+ buildAVAFilter(getEmail(), "E", lf, matchStr);
+ buildAVAFilter(getCommonName(), "CN", lf, matchStr);
+ buildAVAFilter(getUserID(), "UID", lf, matchStr);
+ buildAVAFilter(getOrgUnit(), "OU", lf, matchStr);
+ buildAVAFilter(getOrg(), "O", lf, matchStr);
+ buildAVAFilter(getLocality(), "L", lf, matchStr);
+ buildAVAFilter(getState(), "ST", lf, matchStr);
+ buildAVAFilter(getCountry(), "C", lf, matchStr);
+
+ if (lf.length() == 0) {
+ filter.append("(x509cert.subject=*)");
+ return;
+ }
+ if (matchStr != null && matchStr.equals(MATCH_EXACTLY)) {
+ filter.append("(&");
+ filter.append(lf);
+ filter.append(")");
+ } else {
+ filter.append("(|");
+ filter.append(lf);
+ filter.append(")");
+ }
+ }
+
+ private void buildRevokedByFilter(StringBuffer filter) {
+ if (!getRevokedByInUse()) {
+ return;
+ }
+
+ String revokedBy = getRevokedBy();
+ if (revokedBy == null || revokedBy.equals("")) {
+ filter.append("(certRevokedBy=*)");
+ } else {
+ filter.append("(certRevokedBy=");
+ filter.append(LDAPUtil.escapeFilter(revokedBy));
+ filter.append(")");
+ }
+ }
+
+ private void buildDateFilter(String prefix,
+ String outStr, long adjustment,
+ StringBuffer filter) {
+ long epoch = 0;
+ try {
+ epoch = Long.parseLong(prefix);
+ } catch (NumberFormatException e) {
+ // exception safely ignored
+ }
+ Calendar from = Calendar.getInstance();
+ from.setTimeInMillis(epoch);
+ filter.append("(");
+ filter.append(LDAPUtil.escapeFilter(outStr));
+ filter.append(Long.toString(from.getTimeInMillis() + adjustment));
+ filter.append(")");
+ }
+
+ private void buildRevokedOnFilter(StringBuffer filter) {
+ if (!getRevokedOnInUse()) {
+ return;
+ }
+ buildDateFilter(getRevokedOnFrom(), "certRevokedOn>=", 0, filter);
+ buildDateFilter(getRevokedOnTo(), "certRevokedOn<=", 86399999, filter);
+ }
+
+ private void buildRevocationReasonFilter(StringBuffer filter) {
+ if (!getRevocationReasonInUse()) {
+ return;
+ }
+ String reasons = getRevocationReason();
+ if (reasons == null) {
+ return;
+ }
+ String queryCertFilter = null;
+ StringTokenizer st = new StringTokenizer(reasons, ",");
+ if (st.hasMoreTokens()) {
+ filter.append("(|");
+ while (st.hasMoreTokens()) {
+ String token = st.nextToken();
+ if (queryCertFilter == null) {
+ queryCertFilter = "";
+ }
+ filter.append("(x509cert.certRevoInfo=");
+ filter.append(LDAPUtil.escapeFilter(token));
+ filter.append(")");
+ }
+ filter.append(")");
+ }
+ }
+
+ private void buildIssuedByFilter(StringBuffer filter) {
+ if (!getIssuedByInUse()) {
+ return;
+ }
+ String issuedBy = getIssuedBy();
+ ;
+ if (issuedBy == null || issuedBy.equals("")) {
+ filter.append("(certIssuedBy=*)");
+ } else {
+ filter.append("(certIssuedBy=");
+ filter.append(LDAPUtil.escapeFilter(issuedBy));
+ filter.append(")");
+ }
+ }
+
+ private void buildIssuedOnFilter(StringBuffer filter) {
+ if (!getIssuedOnInUse()) {
+ return;
+ }
+ buildDateFilter(getIssuedOnFrom(), "certCreateTime>=", 0, filter);
+ buildDateFilter(getIssuedOnTo(), "certCreateTime<=", 86399999, filter);
+ }
+
+ private void buildValidNotBeforeFilter(StringBuffer filter) {
+ if (!getValidNotBeforeInUse()) {
+ return;
+ }
+ buildDateFilter(validNotBeforeFrom, "x509cert.notBefore>=", 0, filter);
+ buildDateFilter(validNotBeforeTo, "x509cert.notBefore<=", 86399999, filter);
+
+ }
+
+ private void buildValidNotAfterFilter(StringBuffer filter) {
+ if (!getValidNotAfterInUse()) {
+ return;
+ }
+ buildDateFilter(getValidNotAfterFrom(), "x509cert.notAfter>=", 0, filter);
+ buildDateFilter(getValidNotAfterTo(), "x509cert.notAfter<=", 86399999, filter);
+
+ }
+
+ private void buildValidityLengthFilter(StringBuffer filter) {
+ if (!getValidityLengthInUse()) {
+ return;
+ }
+ String op = getValidityOperation();
+ long count = 0;
+ try {
+ count = Long.parseLong(getValidityCount());
+ } catch (NumberFormatException e) {
+ // safely ignore
+ }
+ long unit = 0;
+ try {
+ unit = Long.parseLong(getValidityUnit());
+ } catch (NumberFormatException e) {
+ // safely ignore
+ }
+ filter.append("(");
+ filter.append("x509cert.duration");
+ filter.append(LDAPUtil.escapeFilter(op));
+ filter.append(count * unit);
+ filter.append(")");
+ }
+
+ private void buildCertTypeFilter(StringBuffer filter) {
+ if (!getCertTypeInUse()) {
+ return;
+ }
+ if (isOn(getCertTypeSSLClient())) {
+ filter.append("(x509cert.nsExtension.SSLClient=on)");
+ } else if (isOff(getCertTypeSSLClient())) {
+ filter.append("(x509cert.nsExtension.SSLClient=off)");
+ }
+ if (isOn(getCertTypeSSLServer())) {
+ filter.append("(x509cert.nsExtension.SSLServer=on)");
+ } else if (isOff(getCertTypeSSLServer())) {
+ filter.append("(x509cert.nsExtension.SSLServer=off)");
+ }
+ if (isOn(getCertTypeSecureEmail())) {
+ filter.append("(x509cert.nsExtension.SecureEmail=on)");
+ } else if (isOff(getCertTypeSecureEmail())) {
+ filter.append("(x509cert.nsExtension.SecureEmail=off)");
+ }
+ if (isOn(getCertTypeSubSSLCA())) {
+ filter.append("(x509cert.nsExtension.SubordinateSSLCA=on)");
+ } else if (isOff(getCertTypeSubSSLCA())) {
+ filter.append("(x509cert.nsExtension.SubordinateSSLCA=off)");
+ }
+ if (isOn(getCertTypeSubEmailCA())) {
+ filter.append("(x509cert.nsExtension.SubordinateEmailCA=on)");
+ } else if (isOff(getCertTypeSubEmailCA())) {
+ filter.append("(x509cert.nsExtension.SubordinateEmailCA=off)");
+ }
+ }
+
+ private boolean isOn(String value) {
+ String inUse = value;
+ if (inUse == null) {
+ return false;
+ }
+ if (inUse.equals("on")) {
+ return true;
+ }
+ return false;
+ }
+
+ private boolean isOff(String value) {
+ String inUse = value;
+ if (inUse == null) {
+ return false;
+ }
+ if (inUse.equals("off")) {
+ return true;
+ }
+ return false;
+ }
+
+ private void buildAVAFilter(String param,
+ String avaName, StringBuffer lf, String match) {
+ if (param != null && !param.equals("")) {
+ if (match != null && match.equals(MATCH_EXACTLY)) {
+ lf.append("(|");
+ lf.append("(x509cert.subject=*");
+ lf.append(avaName);
+ lf.append("=");
+ lf.append(LDAPUtil.escapeFilter(LDAPUtil.escapeDN(param, false)));
+ lf.append(",*)");
+ lf.append("(x509cert.subject=*");
+ lf.append(avaName);
+ lf.append("=");
+ lf.append(LDAPUtil.escapeFilter(LDAPUtil.escapeDN(param, false)));
+ lf.append(")");
+ lf.append(")");
+ } else {
+ lf.append("(x509cert.subject=*");
+ lf.append(avaName);
+ lf.append("=");
+ lf.append("*");
+ lf.append(LDAPUtil.escapeFilter(LDAPUtil.escapeDN(param, false)));
+ lf.append("*)");
+ }
+ }
+
+ }
+
+ private String searchFilter = null;
+
+ public String getSearchFilter() {
+ return searchFilter;
+ }
+
+ public void setSearchFilter(String searchFilter) {
+ this.searchFilter = searchFilter;
+ }
+
+ public static CertSearchRequest valueOf(Reader reader) throws JAXBException {
+ JAXBContext context = JAXBContext.newInstance(CertSearchRequest.class);
+ Unmarshaller unmarshaller = context.createUnmarshaller();
+ return (CertSearchRequest) unmarshaller.unmarshal(reader);
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertUnrevokeRequest.java b/base/common/src/com/netscape/certsrv/cert/CertUnrevokeRequest.java
new file mode 100644
index 000000000..7885482be
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/cert/CertUnrevokeRequest.java
@@ -0,0 +1,124 @@
+// --- 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.certsrv.cert;
+
+import java.io.StringReader;
+import java.io.StringWriter;
+
+import javax.ws.rs.FormParam;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.certsrv.request.RequestIdAdapter;
+
+/**
+ * @author Endi S. Dewata
+ */
+@XmlRootElement(name="CertUnrevokeRequest")
+public class CertUnrevokeRequest {
+
+ public static Marshaller marshaller;
+ public static Unmarshaller unmarshaller;
+
+ static {
+ try {
+ JAXBContext context = JAXBContext.newInstance(CertUnrevokeRequest.class);
+ marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ unmarshaller = context.createUnmarshaller();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ RequestId requestID;
+
+ @XmlElement(name="requestID")
+ @FormParam("requestId")
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ public RequestId getRequestID() {
+ return requestID;
+ }
+
+ public void setRequestID(RequestId requestID) {
+ this.requestID = requestID;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((requestID == null) ? 0 : requestID.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ CertUnrevokeRequest other = (CertUnrevokeRequest) obj;
+ if (requestID == null) {
+ if (other.requestID != null)
+ return false;
+ } else if (!requestID.equals(other.requestID))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static CertUnrevokeRequest valueOf(String string) throws Exception {
+ try {
+ return (CertUnrevokeRequest)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ CertUnrevokeRequest before = new CertUnrevokeRequest();
+ before.setRequestID(new RequestId("42323234"));
+
+ String string = before.toString();
+ System.out.println(string);
+
+ CertUnrevokeRequest after = CertUnrevokeRequest.valueOf(string);
+
+ System.out.println(before.equals(after));
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyArchivalRequest.java b/base/common/src/com/netscape/certsrv/key/KeyArchivalRequest.java
new file mode 100644
index 000000000..2d2d84c94
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyArchivalRequest.java
@@ -0,0 +1,123 @@
+// --- 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.certsrv.key;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="KeyArchivalRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class KeyArchivalRequest {
+
+ private static final String CLIENT_ID = "clientID";
+ private static final String TRANS_WRAPPED_SESSION_KEY = "transWrappedSessionKey";
+ private static final String DATA_TYPE = "dataType";
+ private static final String WRAPPED_PRIVATE_DATA = "wrappedPrivateData";
+
+ @XmlElement
+ protected String clientId;
+
+ @XmlElement
+ protected String transWrappedSessionKey;
+
+ @XmlElement
+ protected String dataType;
+
+ @XmlElement
+ protected String wrappedPrivateData;
+
+ public KeyArchivalRequest() {
+ // required for JAXB (defaults)
+ }
+
+ public KeyArchivalRequest(MultivaluedMap<String, String> form) {
+ clientId = form.getFirst(CLIENT_ID);
+ transWrappedSessionKey = form.getFirst(TRANS_WRAPPED_SESSION_KEY);
+ dataType = form.getFirst(DATA_TYPE);
+ wrappedPrivateData = form.getFirst(WRAPPED_PRIVATE_DATA);
+ }
+
+ /**
+ * @return the clientId
+ */
+ public String getClientId() {
+ return clientId;
+ }
+
+ /**
+ * @param clientId the clientId to set
+ */
+ public void setClientId(String clientId) {
+ this.clientId = clientId;
+ }
+
+ /**
+ * @return the transWrappedSessionKey
+ */
+ public String getTransWrappedSessionKey() {
+ return transWrappedSessionKey;
+ }
+
+ /**
+ * @param transWrappedSessionKey the transWrappedSessionKey to set
+ */
+ public void setTransWrappedSessionKey(String transWrappedSessionKey) {
+ this.transWrappedSessionKey = transWrappedSessionKey;
+ }
+
+ /**
+ * @return the dataType
+ */
+ public String getDataType() {
+ return dataType;
+ }
+
+ /**
+ * @param dataType the dataType to set
+ */
+ public void setDataType(String dataType) {
+ this.dataType = dataType;
+ }
+
+ /**
+ * @return the wrappedPrivateData
+ */
+ public String getWrappedPrivateData() {
+ return wrappedPrivateData;
+ }
+
+ /**
+ * @param wrappedPrivateData the wrappedPrivateData to set
+ */
+ public void setWrappedPrivateData(String wrappedPrivateData) {
+ this.wrappedPrivateData = wrappedPrivateData;
+ }
+
+
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyData.java b/base/common/src/com/netscape/certsrv/key/KeyData.java
new file mode 100644
index 000000000..63c0591c2
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyData.java
@@ -0,0 +1,76 @@
+// --- 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.certsrv.key;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="SecurityData")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class KeyData {
+ @XmlElement
+ String wrappedPrivateData;
+
+ @XmlElement
+ String nonceData;
+
+ public KeyData() {
+ // required for JAXB (defaults)
+ }
+
+ /**
+ * @return the wrappedPrivateData
+ */
+ public String getWrappedPrivateData() {
+ return wrappedPrivateData;
+ }
+
+ /**
+ * @param wrappedPrivateData the wrappedPrivateData to set
+ */
+ public void setWrappedPrivateData(String wrappedPrivateData) {
+ this.wrappedPrivateData = wrappedPrivateData;
+ }
+
+ /**
+ * @return the nonceData
+ */
+
+ public String getNonceData() {
+ return nonceData;
+ }
+
+ /**
+ * @param nonceData the nonceData to set
+ */
+
+ public void setNonceData(String nonceData) {
+ this.nonceData = nonceData;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java b/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java
new file mode 100644
index 000000000..6f4751dcc
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java
@@ -0,0 +1,85 @@
+// --- 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.certsrv.key;
+
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessorType;
+
+import com.netscape.certsrv.dbs.keydb.KeyId;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="SecurityDataInfo")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class KeyDataInfo {
+
+ @XmlElement
+ protected String keyURL;
+
+ @XmlElement
+ protected String clientID;
+
+ public KeyDataInfo() {
+ // required for JAXB (defaults)
+ }
+
+ /**
+ * @return the keyURL
+ */
+ public String getKeyURL() {
+ return keyURL;
+ }
+
+ /**
+ * @param keyURL the keyURL to set
+ */
+ public void setKeyURL(String keyURL) {
+ this.keyURL = keyURL;
+ }
+
+ /**
+ * @return the key ID in the keyURL
+ */
+ public KeyId getKeyId() {
+ String id = keyURL.substring(keyURL.lastIndexOf("/") + 1);
+ return new KeyId(id);
+ }
+
+ /**
+ * @return the clientID
+ */
+ public String getClientID() {
+ return clientID;
+ }
+
+ /**
+ * @param clientID the clientID to set
+ */
+ public void setClientID(String clientID) {
+ this.clientID = clientID;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java b/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java
new file mode 100644
index 000000000..c04820299
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java
@@ -0,0 +1,87 @@
+// --- 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.certsrv.key;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.netscape.certsrv.base.Link;
+
+@XmlRootElement(name = "SecurityDataInfos")
+public class KeyDataInfos {
+
+ protected Collection<KeyDataInfo> keyInfos;
+ protected List<Link> links;
+
+ /**
+ * @return the keyInfos
+ */
+ @XmlElementRef
+ public Collection<KeyDataInfo> getKeyInfos() {
+ return keyInfos;
+ }
+ /**
+ * @param keyInfos the keyInfos to set
+ */
+ public void setKeyInfos(Collection<KeyDataInfo> keyInfos) {
+ this.keyInfos = keyInfos;
+ }
+ /**
+ * @return the links
+ */
+ @XmlElementRef
+ public List<Link> getLinks() {
+ return links;
+ }
+ /**
+ * @param links the links to set
+ */
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ @XmlTransient
+ public String getNext() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("next".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+
+ @XmlTransient
+ public String getPrevious() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("previous".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java b/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java
new file mode 100644
index 000000000..d14f61241
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyRecoveryRequest.java
@@ -0,0 +1,155 @@
+// --- 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.certsrv.key;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.dbs.keydb.KeyIdAdapter;
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.certsrv.request.RequestIdAdapter;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="KeyRecoveryRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class KeyRecoveryRequest {
+
+ private static final String KEY_ID = "keyId";
+ private static final String REQUEST_ID = "requestId";
+ private static final String TRANS_WRAPPED_SESSION_KEY = "transWrappedSessionKey";
+ private static final String SESSION_WRAPPED_PASSPHRASE = "sessionWrappedPassphrase";
+ private static final String NONCE_DATA = "nonceData";
+
+ @XmlElement
+ @XmlJavaTypeAdapter(KeyIdAdapter.class)
+ protected KeyId keyId;
+
+ @XmlElement
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ protected RequestId requestId;
+
+ @XmlElement
+ protected String transWrappedSessionKey;
+
+ @XmlElement
+ protected String sessionWrappedPassphrase;
+
+ @XmlElement
+ protected String nonceData;
+
+ public KeyRecoveryRequest() {
+ // required for JAXB (defaults)
+ }
+
+ public KeyRecoveryRequest(MultivaluedMap<String, String> form) {
+ if (form.containsKey(KEY_ID)) {
+ keyId = new KeyId(form.getFirst(KEY_ID));
+ }
+ if (form.containsKey(REQUEST_ID)) {
+ requestId = new RequestId(form.getFirst(REQUEST_ID));
+ }
+ transWrappedSessionKey = form.getFirst(TRANS_WRAPPED_SESSION_KEY);
+ sessionWrappedPassphrase = form.getFirst(SESSION_WRAPPED_PASSPHRASE);
+ nonceData = form.getFirst(NONCE_DATA);
+ }
+
+ /**
+ * @return the keyId
+ */
+ public KeyId getKeyId() {
+ return keyId;
+ }
+
+ /**
+ * @param keyId the keyId to set
+ */
+ public void setKeyId(KeyId keyId) {
+ this.keyId = keyId;
+ }
+
+ /**
+ * @return the requestId
+ */
+ public RequestId getRequestId() {
+ return requestId;
+ }
+
+ /**
+ * @param requestId the requestId to set
+ */
+ public void setRequestId(RequestId requestId) {
+ this.requestId = requestId;
+ }
+
+ /**
+ * @return the transWrappedSessionKey
+ */
+ public String getTransWrappedSessionKey() {
+ return transWrappedSessionKey;
+ }
+
+ /**
+ * @param transWrappedSessionKey the transWrappedSessionKey to set
+ */
+ public void setTransWrappedSessionKey(String transWrappedSessionKey) {
+ this.transWrappedSessionKey = transWrappedSessionKey;
+ }
+
+ /**
+ * @return the sessionWrappedPassphrase
+ */
+ public String getSessionWrappedPassphrase() {
+ return sessionWrappedPassphrase;
+ }
+
+ /**
+ * @param sessionWrappedPassphrase the sessionWrappedPassphrase to set
+ */
+ public void setSessionWrappedPassphrase(String sessionWrappedPassphrase) {
+ this.sessionWrappedPassphrase = sessionWrappedPassphrase;
+ }
+
+ /**
+ * @return nonceData
+ */
+
+ public String getNonceData() {
+ return nonceData;
+ }
+
+ /**
+ * @param nonceData the nonceData to set
+ */
+
+ public void setNonceData(String nonceData) {
+ this.nonceData = nonceData;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java b/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java
new file mode 100644
index 000000000..2a0e062e5
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java
@@ -0,0 +1,61 @@
+// --- 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.certsrv.key;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.request.CMSRequestInfo;
+
+@XmlRootElement(name = "SecurityDataRequestInfo")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class KeyRequestInfo extends CMSRequestInfo {
+
+ @XmlElement
+ protected String keyURL;
+
+ public KeyRequestInfo() {
+ // required to be here for JAXB (defaults)
+ }
+
+ /**
+ * @return the keyURL
+ */
+ public String getKeyURL() {
+ return keyURL;
+ }
+
+ /**
+ * @return the key ID in the keyURL
+ */
+ public KeyId getKeyId() {
+ String id = keyURL.substring(keyURL.lastIndexOf("/") + 1);
+ return new KeyId(id);
+ }
+
+ /**
+ * @param keyURL the keyURL to set
+ */
+ public void setKeyURL(String keyURL) {
+ this.keyURL = keyURL;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java b/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java
new file mode 100644
index 000000000..67e6fdf5c
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java
@@ -0,0 +1,89 @@
+// --- 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.certsrv.key;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.netscape.certsrv.base.Link;
+
+@XmlRootElement(name = "SecurityDataRequestInfos")
+public class KeyRequestInfos {
+ protected Collection<KeyRequestInfo> requests;
+ protected List<Link> links;
+
+ /**
+ * @return the requests
+ */
+ @XmlElementRef
+ public Collection<KeyRequestInfo> getRequests() {
+ return requests;
+ }
+
+ /**
+ * @param requests the requests to set
+ */
+ public void setRequests(Collection<KeyRequestInfo> requests) {
+ this.requests = requests;
+ }
+
+ /**
+ * @return the links
+ */
+ @XmlElementRef
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ @XmlTransient
+ public String getNext() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("next".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+
+ @XmlTransient
+ public String getPrevious() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("previous".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java b/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java
new file mode 100644
index 000000000..7fecd0610
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java
@@ -0,0 +1,88 @@
+package com.netscape.certsrv.key;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+
+import com.netscape.certsrv.request.RequestId;
+
+@Path("agent/keyrequests")
+public interface KeyRequestResource {
+
+ public final String SYMMETRIC_KEY_TYPE = "symmetricKey";
+ public final String PASS_PHRASE_TYPE = "passPhrase";
+ public final String ASYMMETRIC_KEY_TYPE = "asymmetricKey";
+
+ public static final int DEFAULT_START = 0;
+ public static final int DEFAULT_PAGESIZE = 20;
+ public static final int DEFAULT_MAXRESULTS = 100;
+ public static final int DEFAULT_MAXTIME = 10;
+
+ /**
+ * Used to generate list of key requests based on the search parameters
+ */
+ @GET
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public KeyRequestInfos listRequests(@QueryParam("requestState") String requestState,
+ @QueryParam("requestType") String requestType,
+ @QueryParam("clientID") String clientID,
+ @DefaultValue(""+DEFAULT_START) @QueryParam("start") RequestId start,
+ @DefaultValue(""+DEFAULT_PAGESIZE) @QueryParam("pageSize") int pageSize,
+ @DefaultValue(""+DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults,
+ @DefaultValue(""+DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime);
+
+
+ /**
+ * Used to retrieve key request info for a specific request
+ */
+ @GET
+ @Path("{id}")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public KeyRequestInfo getRequestInfo(@PathParam("id") RequestId id);
+
+ // Archiving - used to test integration with a browser
+ @POST
+ @Path("archive")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_FORM_URLENCODED})
+ public KeyRequestInfo archiveKey(MultivaluedMap<String, String> form);
+
+ @POST
+ @Path("archive")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public KeyRequestInfo archiveKey(KeyArchivalRequest data);
+
+ //Recovery - used to test integration with a browser
+ @POST
+ @Path("recover")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_FORM_URLENCODED})
+ public KeyRequestInfo recoverKey(MultivaluedMap<String, String> form);
+
+ @POST
+ @Path("recover")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public KeyRequestInfo recoverKey(KeyRecoveryRequest data);
+
+ @POST
+ @Path("{id}/approve")
+ public void approveRequest(@PathParam("id") RequestId id);
+
+ @POST
+ @Path("{id}/reject")
+ public void rejectRequest(@PathParam("id") RequestId id);
+
+ @POST
+ @Path("{id}/cancel")
+ public void cancelRequest(@PathParam("id") RequestId id);
+
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyResource.java b/base/common/src/com/netscape/certsrv/key/KeyResource.java
new file mode 100644
index 000000000..a499ca11f
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyResource.java
@@ -0,0 +1,45 @@
+package com.netscape.certsrv.key;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.DefaultValue;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+
+
+@Path("agent/keys")
+public interface KeyResource {
+
+ public static final int DEFAULT_MAXTIME = 10;
+ public static final int DEFAULT_MAXRESULTS = 100;
+
+ @GET
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public KeyDataInfos listKeys(@QueryParam("clientID") String clientID,
+ @QueryParam("status") String status,
+ @DefaultValue(""+DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults,
+ @DefaultValue(""+DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime);
+
+
+ /**
+ * Used to retrieve a key
+ * @param data
+ * @return
+ */
+ @POST
+ @Path("retrieve")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public KeyData retrieveKey(KeyRecoveryRequest data);
+
+ // retrieval - used to test integration with a browser
+ @POST
+ @Path("retrieve")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
+ public KeyData retrieveKey(MultivaluedMap<String, String> form);
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/PolicyConstraint.java b/base/common/src/com/netscape/certsrv/profile/PolicyConstraint.java
new file mode 100644
index 000000000..8b43661a2
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/PolicyConstraint.java
@@ -0,0 +1,73 @@
+// --- 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.certsrv.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class PolicyConstraint {
+ @XmlAttribute(name="id")
+ private String name;
+
+ @XmlElement(name="description")
+ private String text;
+
+ @XmlElement(name = "constraint")
+ private List<PolicyConstraintValue> constraints = new ArrayList<PolicyConstraintValue>();
+
+ public PolicyConstraint() {
+ // required for jaxb
+ }
+
+ public void addConstraint(PolicyConstraintValue constraint) {
+ constraints.add(constraint);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public List<PolicyConstraintValue> getConstraints() {
+ return constraints;
+ }
+
+ public void setConstraints(List<PolicyConstraintValue> constraints) {
+ this.constraints = constraints;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/PolicyConstraintValue.java b/base/common/src/com/netscape/certsrv/profile/PolicyConstraintValue.java
new file mode 100644
index 000000000..5241ad832
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/PolicyConstraintValue.java
@@ -0,0 +1,61 @@
+// --- 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.certsrv.profile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.certsrv.property.Descriptor;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class PolicyConstraintValue {
+ @XmlAttribute(name="id")
+ private String name;
+
+ @XmlElement
+ private Descriptor descriptor;
+
+ public PolicyConstraintValue() {
+ // required for jax-b
+ }
+
+ public PolicyConstraintValue(String name, Descriptor descriptor) {
+ this.name = name;
+ this.descriptor = descriptor;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public Descriptor getDescriptor() {
+ return descriptor;
+ }
+
+ public void setDescriptor(Descriptor descriptor) {
+ this.descriptor = descriptor;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/PolicyDefault.java b/base/common/src/com/netscape/certsrv/profile/PolicyDefault.java
new file mode 100644
index 000000000..2b95cf5f0
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/PolicyDefault.java
@@ -0,0 +1,73 @@
+// --- 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.certsrv.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class PolicyDefault {
+ @XmlAttribute(name="id")
+ private String name;
+
+ @XmlElement(name="description")
+ private String text;
+
+ @XmlElement(name="policyAttribute")
+ private List<ProfileAttribute> attributes = new ArrayList<ProfileAttribute>();
+
+ public PolicyDefault() {
+ // required for jaxb
+ }
+
+ public void addAttribute(ProfileAttribute attr) {
+ attributes.add(attr);
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public List<ProfileAttribute> getAttributes() {
+ return attributes;
+ }
+
+ public void setAttributes(List<ProfileAttribute> attributes) {
+ this.attributes = attributes;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileAttribute.java b/base/common/src/com/netscape/certsrv/profile/ProfileAttribute.java
new file mode 100644
index 000000000..9c889bb8a
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileAttribute.java
@@ -0,0 +1,80 @@
+// --- 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.certsrv.profile;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.netscape.certsrv.property.Descriptor;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfileAttribute {
+
+ @XmlAttribute
+ private String name;
+
+ @XmlElement
+ private String value;
+
+ @XmlElement
+ private Descriptor descriptor;
+
+ public ProfileAttribute() {
+ // required for jax-b
+ }
+
+ public ProfileAttribute(String name, String value, Descriptor descriptor) {
+ this.name = name;
+ this.value = value;
+ this.descriptor = descriptor;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ public Descriptor getDescriptor() {
+ return descriptor;
+ }
+
+ public void setDescriptor(Descriptor descriptor) {
+ this.descriptor = descriptor;
+ }
+
+ @Override
+ public String toString() {
+ return "PolicyAttribute [name=" + name + ", value=" + value + ", descriptor=" + descriptor + "]";
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileData.java b/base/common/src/com/netscape/certsrv/profile/ProfileData.java
new file mode 100644
index 000000000..465981add
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileData.java
@@ -0,0 +1,147 @@
+// --- 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.certsrv.profile;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author jmagne
+ *
+ */
+
+@XmlRootElement(name = "ProfileData")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfileData {
+
+ @XmlElement
+ protected String id;
+
+ @XmlElement
+ protected String name;
+
+ @XmlElement
+ protected String description;
+
+ @XmlElement
+ protected boolean isEnabled;
+
+ @XmlElement
+ protected boolean isVisible;
+
+ @XmlElement
+ protected String enabledBy;
+
+ @XmlElement(name = "Input")
+ protected List<ProfileInput> inputs = new ArrayList<ProfileInput>();
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setIsEnabled(boolean isEnabled) {
+ this.isEnabled = isEnabled;
+ }
+
+ public boolean getIsEnabled() {
+ return isEnabled;
+ }
+
+ public void setIsVisible(boolean isVisible) {
+ this.isVisible = isVisible;
+ }
+
+ public boolean getIsVisible() {
+ return isVisible;
+ }
+
+ public void setEnabledBy(String enabledBy) {
+ this.enabledBy = enabledBy;
+ }
+
+ public String getEnabledBy() {
+ return enabledBy;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public ProfileInput addProfileInput(String name) {
+
+ ProfileInput oldInput = getProfileInput(name);
+
+ if (oldInput != null)
+ return oldInput;
+
+ ProfileInput newInput = new ProfileInput();
+ newInput.setInputId(name);
+
+ inputs.add(newInput);
+
+ return newInput;
+ }
+
+ public ProfileInput getProfileInput(String name) {
+
+ ProfileInput input = null;
+
+ Iterator<ProfileInput> it = inputs.iterator();
+
+ ProfileInput curInput = null;
+ while (it.hasNext()) {
+ curInput = it.next();
+
+ if (curInput != null && curInput.getInputId().equals(name))
+ break;
+ }
+
+ return input;
+ }
+
+ public List<ProfileInput> getProfileInputsList() {
+ return inputs;
+ }
+
+} \ No newline at end of file
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileDataInfo.java b/base/common/src/com/netscape/certsrv/profile/ProfileDataInfo.java
new file mode 100644
index 000000000..22062309d
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileDataInfo.java
@@ -0,0 +1,68 @@
+//--- 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.certsrv.profile;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name = "ProfileDataInfo")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfileDataInfo {
+
+ @XmlElement
+ protected String profileURL;
+
+ @XmlElement
+ protected String profileId;
+
+ public ProfileDataInfo() {
+ // required for JAXB (defaults)
+ }
+
+ /**
+ * @return the profileURL
+ */
+ public String getProfileURL() {
+ return profileURL;
+ }
+
+ /**
+ * @param keyURL the profileURL to set
+ */
+ public void setProfileURL(String profileURL) {
+ this.profileURL = profileURL;
+ }
+
+ public void setProfileId(String profileId) {
+ this.profileId = profileId;
+ }
+
+ /**
+ * @return the profile ID in the profileURL
+ */
+ public String getProfileId() {
+ return profileId;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java b/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java
new file mode 100644
index 000000000..ed2c11cf7
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileDataInfos.java
@@ -0,0 +1,90 @@
+//--- 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.certsrv.profile;
+
+import java.util.Collection;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+
+import com.netscape.certsrv.base.Link;
+
+@XmlRootElement(name = "ProfileDataInfos")
+public class ProfileDataInfos {
+
+ protected Collection<ProfileDataInfo> profileInfos;
+ protected List<Link> links;
+
+ /**
+ * @return the ProfileInfos
+ */
+ @XmlElementRef
+ public Collection<ProfileDataInfo> getProfileInfos() {
+ return profileInfos;
+ }
+
+ /**
+ * @param ProfileInfos theProfileInfos to set
+ */
+ public void setProfileInfos(Collection<ProfileDataInfo> profileInfos) {
+ this.profileInfos = profileInfos;
+ }
+
+ /**
+ * @return the links
+ */
+ @XmlElementRef
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+ @XmlTransient
+ public String getNext() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("next".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+
+ @XmlTransient
+ public String getPrevious() {
+ if (links == null) {
+ return null;
+ }
+ for (Link link : links) {
+ if ("previous".equals(link.getRelationship())) {
+ return link.getHref();
+ }
+ }
+ return null;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileInput.java b/base/common/src/com/netscape/certsrv/profile/ProfileInput.java
new file mode 100644
index 000000000..64d2aafdb
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileInput.java
@@ -0,0 +1,94 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.profile;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+public class ProfileInput {
+
+ public ProfileInput() {
+ // required for jaxb
+ }
+
+ @XmlElement
+ public String getInputId() {
+ return inputId;
+ }
+
+ private String inputId;
+
+ @XmlJavaTypeAdapter(InputAttrsAdapter.class)
+ public Map<String, String> InputAttrs = new LinkedHashMap<String, String>();
+
+ public void setInputAttr(String name, String value) {
+ InputAttrs.put(name, value);
+ }
+
+ public void setInputId(String inputId) {
+ this.inputId = inputId;
+ }
+
+ public static class InputAttrsAdapter extends XmlAdapter<InputAttrList, Map<String, String>> {
+
+ public InputAttrList marshal(Map<String, String> map) {
+ InputAttrList list = new InputAttrList();
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ Attribute attribute = new Attribute();
+ attribute.name = entry.getKey();
+ attribute.value = entry.getValue();
+ list.attributes.add(attribute);
+ }
+ return list;
+ }
+
+ public Map<String, String> unmarshal(InputAttrList list) {
+ Map<String, String> map = new LinkedHashMap<String, String>();
+ for (Attribute attribute : list.attributes) {
+ map.put(attribute.name, attribute.value);
+ }
+ return map;
+ }
+ }
+
+ public static class InputAttrList {
+ @XmlElement(name = "InputAttr")
+ public List<Attribute> attributes = new ArrayList<Attribute>();
+ }
+
+ public static class Attribute {
+
+ @XmlAttribute
+ public String name;
+
+ @XmlValue
+ public String value;
+ }
+
+ public Map<String, String> getAttributes() {
+ return InputAttrs;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileNotFoundException.java b/base/common/src/com/netscape/certsrv/profile/ProfileNotFoundException.java
new file mode 100644
index 000000000..7a1c9ea62
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileNotFoundException.java
@@ -0,0 +1,62 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.profile;
+
+import javax.ws.rs.core.Response;
+
+import com.netscape.certsrv.base.PKIException;
+
+public class ProfileNotFoundException extends PKIException {
+
+ private static final long serialVersionUID = -4784839378360933483L;
+
+ public String profileId;
+
+ public ProfileNotFoundException(String profileId) {
+ this(profileId, "Profile ID " + profileId + " not found");
+ }
+
+ public ProfileNotFoundException(String profileId, String message) {
+ super(Response.Status.NOT_FOUND, message);
+ this.profileId = profileId;
+ }
+
+ public ProfileNotFoundException(String profileId, String message, Throwable cause) {
+ super(Response.Status.NOT_FOUND, message, cause);
+ this.profileId = profileId;
+ }
+
+ public ProfileNotFoundException(Data data) {
+ super(data);
+ profileId = data.getAttribute("profileId");
+ }
+
+ public Data getData() {
+ Data data = super.getData();
+ data.setAttribute("profileId", profileId);
+ return data;
+ }
+
+ public String getProfileId() {
+ return profileId;
+ }
+
+ public void setRequestId(String profileId) {
+ this.profileId = profileId;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java b/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java
new file mode 100644
index 000000000..2e25f619d
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileOutput.java
@@ -0,0 +1,84 @@
+// --- BEGIN COPYRIGHT BLOCK ---
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; version 2 of the License.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// (C) 2007 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+package com.netscape.certsrv.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfileOutput {
+
+ public ProfileOutput() {
+ // required for jaxb
+ }
+
+ @XmlElement
+ private String outputId;
+
+ @XmlElement(name = "attributes")
+ private List<ProfileAttribute> attrs = new ArrayList<ProfileAttribute>();
+
+ @XmlElement
+ private String name;
+
+ @XmlElement
+ private String text;
+
+ public String getOutputId() {
+ return outputId;
+ }
+
+ public void setOutputId(String OutputId) {
+ this.outputId = OutputId;
+ }
+
+ public List<ProfileAttribute> getAttrs() {
+ return attrs;
+ }
+
+ public void setAttrs(List<ProfileAttribute> attrs) {
+ this.attrs = attrs;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public void setText(String text) {
+ this.text = text;
+ }
+
+ public void addAttribute(ProfileAttribute attr) {
+ attrs.add(attr);
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfilePolicy.java b/base/common/src/com/netscape/certsrv/profile/ProfilePolicy.java
new file mode 100644
index 000000000..d5f84f188
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfilePolicy.java
@@ -0,0 +1,82 @@
+//--- 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.certsrv.profile;
+
+import java.io.ByteArrayOutputStream;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfilePolicy {
+ @XmlAttribute
+ private String id = null;
+
+ @XmlElement
+ private PolicyDefault def = null;
+
+ @XmlElement
+ private PolicyConstraint constraint = null;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public PolicyDefault getDef() {
+ return def;
+ }
+
+ public void setDef(PolicyDefault def) {
+ this.def = def;
+ }
+
+ public PolicyConstraint getConstraint() {
+ return constraint;
+ }
+
+ public void setConstraint(PolicyConstraint constraint) {
+ this.constraint = constraint;
+ }
+
+ public String toString() {
+ try {
+ JAXBContext context = JAXBContext.newInstance(ProfilePolicy.class);
+ Marshaller marshaller = context.createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+
+ marshaller.marshal(this, stream);
+ return stream.toString();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfilePolicySet.java b/base/common/src/com/netscape/certsrv/profile/ProfilePolicySet.java
new file mode 100644
index 000000000..6c1dc2b9d
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfilePolicySet.java
@@ -0,0 +1,50 @@
+//--- 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.certsrv.profile;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfilePolicySet {
+ @XmlElement
+ protected List<ProfilePolicy> policies = new ArrayList<ProfilePolicy>();
+
+ public List<ProfilePolicy> getPolicies() {
+ return policies;
+ }
+
+ public void setPolicies(List<ProfilePolicy> policies) {
+ this.policies = policies;
+ }
+
+ public void addPolicy(ProfilePolicy policy) {
+ policies.add(policy);
+ }
+
+ public void removePolicy(ProfilePolicy policy) {
+ policies.remove(policy);
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileResource.java b/base/common/src/com/netscape/certsrv/profile/ProfileResource.java
new file mode 100644
index 000000000..6dadef560
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileResource.java
@@ -0,0 +1,43 @@
+package com.netscape.certsrv.profile;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+
+
+@Path("agent/profiles")
+public interface ProfileResource {
+
+ @GET
+ @Path("{id}")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public ProfileData retrieveProfile(@PathParam("id") String id);
+
+ @GET
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public ProfileDataInfos listProfiles();
+
+ /**
+ * Used to retrieve a key
+ *
+ * @param data
+ * @return
+ */
+
+ /*
+ @POST
+ @Path("retrieve")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public ProfileData retrieveProfile(ProfileRetrievalRequestData request);
+
+ // retrieval - used to test integration with a browser
+ @POST
+ @Path("retrieve")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
+ public ProfileData retrievProfile(MultivaluedMap<String, String> form);
+ */
+} \ No newline at end of file
diff --git a/base/common/src/com/netscape/certsrv/profile/ProfileRetrievalRequest.java b/base/common/src/com/netscape/certsrv/profile/ProfileRetrievalRequest.java
new file mode 100644
index 000000000..608686b79
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/profile/ProfileRetrievalRequest.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) 2011 Red Hat, Inc.
+// All rights reserved.
+// --- END COPYRIGHT BLOCK ---
+
+/**
+ *
+ */
+package com.netscape.certsrv.profile;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name = "ProfileRetrievalRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ProfileRetrievalRequest {
+
+ private static final String PROFILE_ID = "profileId";
+
+ @XmlElement
+ protected String profileId;
+
+ public ProfileRetrievalRequest() {
+ // required for JAXB (defaults)
+ }
+
+ public ProfileRetrievalRequest(MultivaluedMap<String, String> form) {
+ if (form.containsKey(PROFILE_ID)) {
+ profileId = form.getFirst(PROFILE_ID);
+ }
+ }
+
+ /**
+ * @return the ProfileId
+ */
+ public String getProfileId() {
+ return profileId;
+ }
+
+ /**
+ * @param ProfileId the ProfileId to set
+ */
+ public void setProfileId(String profileId) {
+ this.profileId = profileId;
+ }
+
+} \ No newline at end of file
diff --git a/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java b/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java
new file mode 100644
index 000000000..0be24fbb4
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java
@@ -0,0 +1,88 @@
+//--- 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.certsrv.request;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+@XmlAccessorType(XmlAccessType.FIELD)
+public class CMSRequestInfo {
+
+ @XmlElement
+ protected String requestType;
+
+ @XmlElement
+ @XmlJavaTypeAdapter(RequestStatusAdapter.class)
+ protected RequestStatus requestStatus;
+
+ @XmlElement
+ protected String requestURL;
+
+ /**
+ * @return the requestType
+ */
+ public String getRequestType() {
+ return requestType;
+ }
+
+ /**
+ * @param requestType the requestType to set
+ */
+ public void setRequestType(String requestType) {
+ this.requestType = requestType;
+ }
+
+ /**
+ * @return the requestStatus
+ */
+ public RequestStatus getRequestStatus() {
+ return requestStatus;
+ }
+
+ /**
+ * @param requestStatus the requestStatus to set
+ */
+ public void setRequestStatus(RequestStatus requestStatus) {
+ this.requestStatus = requestStatus;
+ }
+
+ /**
+ * @return the requestURL
+ */
+ public String getRequestURL() {
+ return requestURL;
+ }
+
+ /**
+ * @return the request ID in the requestURL
+ */
+ public RequestId getRequestId() {
+ String id = requestURL.substring(requestURL.lastIndexOf("/") + 1);
+ return new RequestId(id);
+ }
+
+ /**
+ * @param requestURL the requestURL to set
+ */
+ public void setRequestURL(String requestURL) {
+ this.requestURL = requestURL;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java b/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java
new file mode 100644
index 000000000..cb07caf71
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java
@@ -0,0 +1,59 @@
+//--- 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.certsrv.request;
+
+import java.util.Collection;
+import java.util.List;
+
+import com.netscape.certsrv.base.Link;
+
+//Convenience class to simply hold a Collection of CMSRequests and a List of Links.
+public class CMSRequestInfos {
+
+ protected Collection<CMSRequestInfo> requests;
+ protected List<Link> links;
+
+ /**
+ * @return the requests
+ */
+ public Collection<CMSRequestInfo> getRequests() {
+ return requests;
+ }
+
+ /**
+ * @param requests the requests to set
+ */
+ public void setRequests(Collection<CMSRequestInfo> requests) {
+ this.requests = requests;
+ }
+
+ /**
+ * @return the links
+ */
+ public List<Link> getLinks() {
+ return links;
+ }
+
+ /**
+ * @param links the links to set
+ */
+ public void setLinks(List<Link> links) {
+ this.links = links;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/request/RequestNotFoundException.java b/base/common/src/com/netscape/certsrv/request/RequestNotFoundException.java
new file mode 100644
index 000000000..3db10dd3a
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/request/RequestNotFoundException.java
@@ -0,0 +1,45 @@
+package com.netscape.certsrv.request;
+
+import javax.ws.rs.core.Response;
+
+import com.netscape.certsrv.base.PKIException;
+
+public class RequestNotFoundException extends PKIException {
+
+ private static final long serialVersionUID = -4784839378360933483L;
+
+ public RequestId requestId;
+
+ public RequestNotFoundException(RequestId requestId) {
+ this(requestId, "Request ID "+requestId.toHexString()+" not found");
+ }
+
+ public RequestNotFoundException(RequestId requestId, String message) {
+ super(Response.Status.NOT_FOUND, message);
+ this.requestId = requestId;
+ }
+
+ public RequestNotFoundException(RequestId requestId, String message, Throwable cause) {
+ super(Response.Status.NOT_FOUND, message, cause);
+ this.requestId = requestId;
+ }
+
+ public RequestNotFoundException(Data data) {
+ super(data);
+ requestId = new RequestId(data.getAttribute("requestId"));
+ }
+
+ public Data getData() {
+ Data data = super.getData();
+ data.setAttribute("requestId", requestId.toString());
+ return data;
+ }
+
+ public RequestId getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(RequestId requestId) {
+ this.requestId = requestId;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/system/ConfigurationRequest.java b/base/common/src/com/netscape/certsrv/system/ConfigurationRequest.java
new file mode 100644
index 000000000..ac29b2da7
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/ConfigurationRequest.java
@@ -0,0 +1,724 @@
+// --- 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.certsrv.system;
+
+import java.util.Collection;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="ConfigurationRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ConfigurationRequest {
+ private static final String PIN = "pin";
+ private static final String TOKEN = "token";
+ private static final String TOKEN_PASSWORD = "tokenPassword";
+ private static final String SECURITY_DOMAIN_TYPE = "securityDomainType";
+ private static final String SECURITY_DOMAIN_URI = "securityDomainUri";
+ private static final String SECURITY_DOMAIN_NAME = "securityDomainName";
+ private static final String SECURITY_DOMAIN_USER = "securityDomainUser";
+ private static final String SECURITY_DOMAIN_PASSWORD = "securityDomainPassword";
+ private static final String IS_CLONE = "isClone";
+ private static final String CLONE_URI = "cloneUri";
+ private static final String SUBSYSTEM_NAME = "subsystemName";
+ private static final String P12_FILE = "p12File";
+ private static final String P12_PASSWORD = "p12Password";
+ private static final String HIERARCHY = "hierarchy";
+ private static final String DSHOST = "dsHost";
+ private static final String DSPORT = "dsPort";
+ private static final String BASEDN = "basedn";
+ private static final String BINDDN = "binddn";
+ private static final String DATABASE = "database";
+ private static final String SECURECONN = "secureConn";
+ private static final String REMOVEDATA = "removeData";
+ private static final String MASTER_REPLICATION_PORT = "masterReplicationPort";
+ private static final String CLONE_REPLICATION_PORT = "cloneReplicationPort";
+ private static final String REPLICATION_SECURITY = "replicationSecurity";
+ private static final String ISSUING_CA = "issuingCa";
+ private static final String BACKUP_KEYS = "backupKeys";
+ private static final String BACKUP_FILE = "backupFile";
+ private static final String BACKUP_PASSWORD = "backupPassword";
+ private static final String ADMIN_UID = "adminUid";
+ private static final String ADMIN_EMAIL = "adminEmail";
+ private static final String ADMIN_PASSWORD = "adminPassword";
+ private static final String ADMIN_CERT_REQUEST = "adminCertRequest";
+ private static final String ADMIN_CERT_REQUEST_TYPE = "adminCertRequestType";
+ private static final String ADMIN_SUBJECT_DN = "adminSubjectDN";
+ private static final String ADMIN_NAME = "adminName";
+ private static final String ADMIN_PROFILE_ID = "adminProfileID";
+ private static final String STEP_TWO = "stepTwo";
+
+ //defaults
+ public static final String TOKEN_DEFAULT = "Internal Key Storage Token";
+ public static final String NEW_DOMAIN = "newdomain";
+ public static final String EXISTING_DOMAIN = "existingdomain";
+
+ @XmlElement
+ protected String pin;
+
+ @XmlElement(defaultValue=TOKEN_DEFAULT)
+ protected String token;
+
+ @XmlElement
+ protected String tokenPassword;
+
+ @XmlElement
+ protected String securityDomainType;
+
+ @XmlElement
+ protected String securityDomainUri;
+
+ @XmlElement
+ protected String securityDomainName;
+
+ @XmlElement
+ protected String securityDomainUser;
+
+ @XmlElement
+ protected String securityDomainPassword;
+
+ @XmlElement(defaultValue="false")
+ protected String isClone;
+
+ @XmlElement
+ protected String cloneUri;
+
+ @XmlElement
+ protected String subsystemName;
+
+ @XmlElement
+ protected String p12File;
+
+ @XmlElement
+ protected String p12Password;
+
+ @XmlElement
+ protected String hierarchy;
+
+ @XmlElement
+ protected String dsHost;
+
+ @XmlElement
+ protected String dsPort;
+
+ @XmlElement
+ protected String baseDN;
+
+ @XmlElement
+ protected String bindDN;
+
+ @XmlElement
+ protected String bindpwd;
+
+ @XmlElement
+ protected String database;
+
+ @XmlElement(defaultValue = "off")
+ protected String secureConn;
+
+ @XmlElement
+ protected String removeData;
+
+ @XmlElement
+ protected String masterReplicationPort;
+
+ @XmlElement
+ protected String cloneReplicationPort;
+
+ @XmlElement
+ protected String replicationSecurity;
+
+ @XmlElementRef
+ protected Collection<SystemCertData> systemCerts;
+
+ @XmlElement
+ protected String issuingCA;
+
+ @XmlElement
+ protected String backupKeys;
+
+ @XmlElement
+ protected String backupPassword;
+
+ @XmlElement
+ protected String backupFile;
+
+ @XmlElement
+ protected String adminUID;
+
+ @XmlElement
+ protected String adminPassword;
+
+ @XmlElement
+ protected String adminEmail;
+
+ @XmlElement
+ protected String adminCertRequest;
+
+ @XmlElement
+ protected String adminCertRequestType;
+
+ @XmlElement
+ protected String adminSubjectDN;
+
+ @XmlElement
+ protected String adminName;
+
+ @XmlElement
+ protected String adminProfileID;
+
+ @XmlElement
+ protected String stepTwo;
+
+ public ConfigurationRequest() {
+ // required for JAXB
+ }
+
+ public ConfigurationRequest(MultivaluedMap<String, String> form) {
+ pin = form.getFirst(PIN);
+ token = form.getFirst(TOKEN);
+ tokenPassword = form.getFirst(TOKEN_PASSWORD);
+ securityDomainType = form.getFirst(SECURITY_DOMAIN_TYPE);
+ securityDomainUri = form.getFirst(SECURITY_DOMAIN_URI);
+ securityDomainName = form.getFirst(SECURITY_DOMAIN_NAME);
+ securityDomainUser = form.getFirst(SECURITY_DOMAIN_USER);
+ securityDomainPassword = form.getFirst(SECURITY_DOMAIN_PASSWORD);
+ isClone = form.getFirst(IS_CLONE);
+ cloneUri = form.getFirst(CLONE_URI);
+ subsystemName = form.getFirst(SUBSYSTEM_NAME);
+ p12File = form.getFirst(P12_FILE);
+ p12Password = form.getFirst(P12_PASSWORD);
+ hierarchy = form.getFirst(HIERARCHY);
+ dsHost = form.getFirst(DSHOST);
+ dsPort = form.getFirst(DSPORT);
+ baseDN = form.getFirst(BASEDN);
+ bindDN = form.getFirst(BINDDN);
+ database = form.getFirst(DATABASE);
+ secureConn = form.getFirst(SECURECONN);
+ removeData = form.getFirst(REMOVEDATA);
+ masterReplicationPort = form.getFirst(MASTER_REPLICATION_PORT);
+ cloneReplicationPort = form.getFirst(CLONE_REPLICATION_PORT);
+ replicationSecurity = form.getFirst(REPLICATION_SECURITY);
+ //TODO - figure out how to get the cert requests
+ issuingCA = form.getFirst(ISSUING_CA);
+ backupFile = form.getFirst(BACKUP_FILE);
+ backupPassword = form.getFirst(BACKUP_PASSWORD);
+ backupKeys = form.getFirst(BACKUP_KEYS);
+ adminUID = form.getFirst(ADMIN_UID);
+ adminEmail = form.getFirst(ADMIN_EMAIL);
+ adminPassword = form.getFirst(ADMIN_PASSWORD);
+ adminCertRequest = form.getFirst(ADMIN_CERT_REQUEST);
+ adminCertRequestType = form.getFirst(ADMIN_CERT_REQUEST_TYPE);
+ adminSubjectDN = form.getFirst(ADMIN_SUBJECT_DN);
+ adminName = form.getFirst(ADMIN_NAME);
+ adminProfileID = form.getFirst(ADMIN_PROFILE_ID);
+ stepTwo = form.getFirst(STEP_TWO);
+ }
+
+
+ public String getSubsystemName() {
+ return subsystemName;
+ }
+
+ public void setSubsystemName(String subsystemName) {
+ this.subsystemName = subsystemName;
+ }
+
+ public String getPin() {
+ return pin;
+ }
+
+ public void setPin(String pin) {
+ this.pin = pin;
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public String getSecurityDomainType() {
+ return securityDomainType;
+ }
+
+ public void setSecurityDomainType(String securityDomainType) {
+ this.securityDomainType = securityDomainType;
+ }
+
+ public String getSecurityDomainUri() {
+ return securityDomainUri;
+ }
+
+ public void setSecurityDomainUri(String securityDomainUri) {
+ this.securityDomainUri = securityDomainUri;
+ }
+
+ public String getSecurityDomainName() {
+ return securityDomainName;
+ }
+
+ public void setSecurityDomainName(String securityDomainName) {
+ this.securityDomainName = securityDomainName;
+ }
+
+ public String getSecurityDomainUser() {
+ return securityDomainUser;
+ }
+
+ public void setSecurityDomainUser(String securityDomainUser) {
+ this.securityDomainUser = securityDomainUser;
+ }
+
+ public String getSecurityDomainPassword() {
+ return securityDomainPassword;
+ }
+
+ public void setSecurityDomainPassword(String securityDomainPassword) {
+ this.securityDomainPassword = securityDomainPassword;
+ }
+
+ public String getIsClone() {
+ return isClone;
+ }
+
+ public void setIsClone(String isClone) {
+ this.isClone = isClone;
+ }
+
+ public String getCloneUri() {
+ return cloneUri;
+ }
+
+ public void setCloneUri(String cloneUri) {
+ this.cloneUri = cloneUri;
+ }
+
+ /**
+ * @return the p12File
+ */
+ public String getP12File() {
+ return p12File;
+ }
+
+ /**
+ * @param p12File the p12File to set
+ */
+ public void setP12File(String p12File) {
+ this.p12File = p12File;
+ }
+
+ /**
+ * @return the p12Password
+ */
+ public String getP12Password() {
+ return p12Password;
+ }
+
+ /**
+ * @param p12Password the p12Password to set
+ */
+ public void setP12Password(String p12Password) {
+ this.p12Password = p12Password;
+ }
+
+ /**
+ * @return the tokenPassword
+ */
+ public String getTokenPassword() {
+ return tokenPassword;
+ }
+
+ /**
+ * @param tokenPassword the tokenPassword to set
+ */
+ public void setTokenPassword(String tokenPassword) {
+ this.tokenPassword = tokenPassword;
+ }
+
+ /**
+ * @return the hierarchy
+ */
+ public String getHierarchy() {
+ return hierarchy;
+ }
+
+ /**
+ * @param hierarchy the hierarchy to set
+ */
+ public void setHierarchy(String hierarchy) {
+ this.hierarchy = hierarchy;
+ }
+
+ /**
+ * @return the dsHost
+ */
+ public String getDsHost() {
+ return dsHost;
+ }
+
+ /**
+ * @param dsHost the dsHost to set
+ */
+ public void setDsHost(String dsHost) {
+ this.dsHost = dsHost;
+ }
+
+ /**
+ * @return the dsPort
+ */
+ public String getDsPort() {
+ return dsPort;
+ }
+
+ /**
+ * @param dsPort the dsPort to set
+ */
+ public void setDsPort(String dsPort) {
+ this.dsPort = dsPort;
+ }
+
+ /**
+ * @return the baseDN
+ */
+ public String getBaseDN() {
+ return baseDN;
+ }
+
+ /**
+ * @param baseDN the baseDN to set
+ */
+ public void setBaseDN(String baseDN) {
+ this.baseDN = baseDN;
+ }
+
+ /**
+ * @return the bindDN
+ */
+ public String getBindDN() {
+ return bindDN;
+ }
+
+ /**
+ * @param bindDN the bindDN to set
+ */
+ public void setBindDN(String bindDN) {
+ this.bindDN = bindDN;
+ }
+
+ /**
+ * @return the bindpwd
+ */
+ public String getBindpwd() {
+ return bindpwd;
+ }
+
+ /**
+ * @param bindpwd the bindpwd to set
+ */
+ public void setBindpwd(String bindpwd) {
+ this.bindpwd = bindpwd;
+ }
+
+ /**
+ * @return the secureConn
+ */
+ public String getSecureConn() {
+ return secureConn;
+ }
+
+ /**
+ * @param secureConn the secureConn to set
+ */
+ public void setSecureConn(String secureConn) {
+ this.secureConn = secureConn;
+ }
+
+ /**
+ * @return the removeData
+ */
+ public String getRemoveData() {
+ return removeData;
+ }
+
+ /**
+ * @param removeData the removeData to set
+ */
+ public void setRemoveData(String removeData) {
+ this.removeData = removeData;
+ }
+
+ /**
+ * @return the masterReplicationPort
+ */
+ public String getMasterReplicationPort() {
+ return masterReplicationPort;
+ }
+
+ /**
+ * @param masterReplicationPort the masterReplicationPort to set
+ */
+ public void setMasterReplicationPort(String masterReplicationPort) {
+ this.masterReplicationPort = masterReplicationPort;
+ }
+
+ /**
+ * @return the cloneReplicationPort
+ */
+ public String getCloneReplicationPort() {
+ return cloneReplicationPort;
+ }
+
+ /**
+ * @param cloneReplicationPort the cloneReplicationPort to set
+ */
+ public void setCloneReplicationPort(String cloneReplicationPort) {
+ this.cloneReplicationPort = cloneReplicationPort;
+ }
+
+ /**
+ * @return the replicationSecurity
+ */
+ public String getReplicationSecurity() {
+ return replicationSecurity;
+ }
+
+ /**
+ * @param replicationSecurity the replicationSecurity to set
+ */
+ public void setReplicationSecurity(String replicationSecurity) {
+ this.replicationSecurity = replicationSecurity;
+ }
+
+ /**
+ * @return the database
+ */
+ public String getDatabase() {
+ return database;
+ }
+
+ /**
+ * @param database the database to set
+ */
+ public void setDatabase(String database) {
+ this.database = database;
+ }
+
+ /**
+ *
+ * @return systemCerts
+ */
+ public Collection<SystemCertData> getSystemCerts() {
+ return systemCerts;
+ }
+
+ /**
+ *
+ * @param systemCerts
+ */
+ public void setSystemCerts(Collection<SystemCertData> systemCerts) {
+ this.systemCerts = systemCerts;
+ }
+
+ /**
+ * @return the issuingCA
+ */
+ public String getIssuingCA() {
+ return issuingCA;
+ }
+
+ /**
+ * @param issuingCA the issuingCA to set
+ */
+ public void setIssuingCA(String issuingCA) {
+ this.issuingCA = issuingCA;
+ }
+
+ /**
+ * @return the backupKeys
+ */
+ public String getBackupKeys() {
+ return backupKeys;
+ }
+
+ /**
+ * @param backupKeys the backupKeys to set
+ */
+ public void setBackupKeys(String backupKeys) {
+ this.backupKeys = backupKeys;
+ }
+
+ /**
+ * @return the backupFile
+ */
+ public String getBackupFile() {
+ return backupFile;
+ }
+
+ /**
+ * @param backupFile the backupFile to set
+ */
+ public void setBackupFile(String backupFile) {
+ this.backupFile = backupFile;
+ }
+
+ /**
+ * @return the backupPassword
+ */
+ public String getBackupPassword() {
+ return backupPassword;
+ }
+
+ /**
+ * @param backupPassword the backupPassword to set
+ */
+ public void setBackupPassword(String backupPassword) {
+ this.backupPassword = backupPassword;
+ }
+
+ /**
+ * @return the adminUID
+ */
+ public String getAdminUID() {
+ return adminUID;
+ }
+
+ /**
+ * @param adminUID the adminUID to set
+ */
+ public void setAdminUID(String adminUID) {
+ this.adminUID = adminUID;
+ }
+
+ /**
+ * @return the adminPassword
+ */
+ public String getAdminPassword() {
+ return adminPassword;
+ }
+
+ /**
+ * @param adminPassword the adminPassword to set
+ */
+ public void setAdminPassword(String adminPassword) {
+ this.adminPassword = adminPassword;
+ }
+
+ /**
+ * @return the adminEmail
+ */
+ public String getAdminEmail() {
+ return adminEmail;
+ }
+
+ /**
+ * @param adminEmail the adminEmail to set
+ */
+ public void setAdminEmail(String adminEmail) {
+ this.adminEmail = adminEmail;
+ }
+
+ /**
+ * @return the adminCertRequest
+ */
+ public String getAdminCertRequest() {
+ return adminCertRequest;
+ }
+
+ /**
+ * @param adminCertRequest the adminCertRequest to set
+ */
+ public void setAdminCertRequest(String adminCertRequest) {
+ this.adminCertRequest = adminCertRequest;
+ }
+
+ /**
+ * @return the adminCertRequestType
+ */
+ public String getAdminCertRequestType() {
+ return adminCertRequestType;
+ }
+
+ /**
+ * @param adminCertRequestType the adminCertRequestType to set
+ */
+ public void setAdminCertRequestType(String adminCertRequestType) {
+ this.adminCertRequestType = adminCertRequestType;
+ }
+
+ /**
+ * @return the adminSubjectDN
+ */
+ public String getAdminSubjectDN() {
+ return adminSubjectDN;
+ }
+
+ /**
+ * @param adminSubjectDN the adminSubjectDN to set
+ */
+ public void setAdminSubjectDN(String adminSubjectDN) {
+ this.adminSubjectDN = adminSubjectDN;
+ }
+
+ /**
+ * @return the adminName
+ */
+ public String getAdminName() {
+ return adminName;
+ }
+
+ /**
+ * @param adminName the adminName to set
+ */
+ public void setAdminName(String adminName) {
+ this.adminName = adminName;
+ }
+
+ /**
+ * @return the adminProfileID
+ */
+ public String getAdminProfileID() {
+ return adminProfileID;
+ }
+
+ /**
+ * @param adminProfileID the adminProfileID to set
+ */
+ public void setAdminProfileID(String adminProfileID) {
+ this.adminProfileID = adminProfileID;
+ }
+
+ public String getStepTwo() {
+ return stepTwo;
+ }
+
+ public void setStepTwo(String stepTwo) {
+ this.stepTwo = stepTwo;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/system/ConfigurationResponse.java b/base/common/src/com/netscape/certsrv/system/ConfigurationResponse.java
new file mode 100644
index 000000000..489970c9c
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/ConfigurationResponse.java
@@ -0,0 +1,121 @@
+// --- 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.certsrv.system;
+
+import java.security.cert.CertificateEncodingException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Enumeration;
+import java.util.Vector;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import netscape.security.x509.X509CertImpl;
+
+import com.netscape.certsrv.apps.CMS;
+import com.netscape.cms.servlet.csadmin.Cert;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="ConfigurationResponse")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class ConfigurationResponse {
+
+ @XmlElementRef
+ protected Collection<SystemCertData> systemCerts;
+
+ @XmlElement
+ protected SystemCertData adminCert;
+
+ @XmlElement
+ protected String status;
+
+ public ConfigurationResponse() {
+ systemCerts = new ArrayList<SystemCertData>();
+ adminCert = new SystemCertData();
+ }
+
+ public void setSystemCerts(Vector<Cert> certs) {
+ systemCerts.clear();
+ Enumeration<Cert> e = certs.elements();
+ while (e.hasMoreElements()) {
+ Cert cert = e.nextElement();
+ SystemCertData cdata = new SystemCertData();
+ cdata.setCert(cert.getCert());
+ cdata.setRequest(cert.getRequest());
+ cdata.setTag(cert.getCertTag());
+ cdata.setCertChain(cert.getCertChain());
+ systemCerts.add(cdata);
+ }
+ }
+
+ /**
+ * @return the systemCerts
+ */
+ public Collection<SystemCertData> getSystemCerts() {
+ return systemCerts;
+ }
+
+ /**
+ * @param systemCerts the systemCerts to set
+ */
+ public void setSystemCerts(Collection<SystemCertData> systemCerts) {
+ this.systemCerts = systemCerts;
+ }
+
+ /**
+ * @return the adminCert
+ */
+ public SystemCertData getAdminCert() {
+ return adminCert;
+ }
+
+ /**
+ * @param adminCert the adminCert to set
+ */
+ public void setAdminCert(SystemCertData adminCert) {
+ this.adminCert = adminCert;
+ }
+
+ /**
+ * @return the status
+ */
+ public String getStatus() {
+ return status;
+ }
+
+ /**
+ * @param status the status to set
+ */
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+
+
+ public void setAdminCert(X509CertImpl x509CertImpl) throws CertificateEncodingException {
+ adminCert.setCert(CMS.BtoA(x509CertImpl.getEncoded()));
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/system/DomainInfo.java b/base/common/src/com/netscape/certsrv/system/DomainInfo.java
new file mode 100644
index 000000000..50b606af3
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/DomainInfo.java
@@ -0,0 +1,155 @@
+// --- 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.certsrv.system;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="DomainInfo")
+public class DomainInfo {
+
+ @XmlElement(name="CAList")
+ protected SecurityDomainHostList caList;
+
+ @XmlElement(name="KRAList")
+ protected SecurityDomainHostList kraList;
+
+ @XmlElement(name="OCSPList")
+ protected SecurityDomainHostList ocspList;
+
+ @XmlElement(name="TKSList")
+ protected SecurityDomainHostList tksList;
+
+ @XmlElement(name="TPSList")
+ protected SecurityDomainHostList tpsList;
+
+ @XmlElement(name="RAList")
+ protected SecurityDomainHostList raList;
+
+ @XmlElement
+ protected String name;
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the caList
+ */
+ public SecurityDomainHostList getCaList() {
+ return caList;
+ }
+
+ /**
+ * @param caList the caList to set
+ */
+ public void setCaList(SecurityDomainHostList caList) {
+ this.caList = caList;
+ }
+
+ /**
+ * @return the kraList
+ */
+ public SecurityDomainHostList getKraList() {
+ return kraList;
+ }
+
+ /**
+ * @param kraList the kraList to set
+ */
+ public void setKraList(SecurityDomainHostList kraList) {
+ this.kraList = kraList;
+ }
+
+ /**
+ * @return the ocspList
+ */
+ public SecurityDomainHostList getOcspList() {
+ return ocspList;
+ }
+
+ /**
+ * @param ocspList the ocspList to set
+ */
+ public void setOcspList(SecurityDomainHostList ocspList) {
+ this.ocspList = ocspList;
+ }
+
+ /**
+ * @return the tksList
+ */
+ public SecurityDomainHostList getTksList() {
+ return tksList;
+ }
+
+ /**
+ * @param tksList the tksList to set
+ */
+ public void setTksList(SecurityDomainHostList tksList) {
+ this.tksList = tksList;
+ }
+
+ /**
+ * @return the tpsList
+ */
+ public SecurityDomainHostList getTpsList() {
+ return tpsList;
+ }
+
+ /**
+ * @param tpsList the tpsList to set
+ */
+ public void setTpsList(SecurityDomainHostList tpsList) {
+ this.tpsList = tpsList;
+ }
+
+ /**
+ * @return the raList
+ */
+ public SecurityDomainHostList getRaList() {
+ return raList;
+ }
+
+ /**
+ * @param raList the raList to set
+ */
+ public void setRaList(SecurityDomainHostList raList) {
+ this.raList = raList;
+ }
+
+
+
+
+
+
+
+}
diff --git a/base/common/src/com/netscape/certsrv/system/InstallToken.java b/base/common/src/com/netscape/certsrv/system/InstallToken.java
new file mode 100644
index 000000000..aa34893a1
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/InstallToken.java
@@ -0,0 +1,50 @@
+// --- 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.certsrv.system;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="CertData")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class InstallToken {
+ @XmlElement
+ private String token;
+
+ public InstallToken(String token) {
+ this.token = token;
+ }
+
+ public InstallToken() {
+ // required by jaxb
+ }
+
+ public String getToken() {
+ return token;
+ }
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/system/InstallTokenRequest.java b/base/common/src/com/netscape/certsrv/system/InstallTokenRequest.java
new file mode 100644
index 000000000..bc000a96a
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/InstallTokenRequest.java
@@ -0,0 +1,99 @@
+// --- 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.certsrv.system;
+
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlAccessType;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="InstallTokenRequest")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class InstallTokenRequest {
+ @XmlElement
+ private String user;
+
+ @XmlElement
+ private String password;
+
+ @XmlElement
+ private String subsystem;
+
+ @XmlElement
+ private String host;
+
+ @XmlElement
+ private String port;
+
+ public InstallTokenRequest(String user, String password, String subsystem, String host, String port) {
+ this.user = user;
+ this.password = password;
+ this.subsystem = subsystem;
+ this.host = host;
+ this.port = port;
+ }
+
+ public InstallTokenRequest() {
+ // required for jaxb
+ }
+
+ public String getUser() {
+ return user;
+ }
+
+ public void setUser(String user) {
+ this.user = user;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getSubsystem() {
+ return subsystem;
+ }
+
+ public void setSubsystem(String subsystem) {
+ this.subsystem = subsystem;
+ }
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public String getPort() {
+ return port;
+ }
+
+ public void setPort(String port) {
+ this.port = port;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/system/SecurityDomainHost.java b/base/common/src/com/netscape/certsrv/system/SecurityDomainHost.java
new file mode 100644
index 000000000..9dbf4e8a9
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/SecurityDomainHost.java
@@ -0,0 +1,40 @@
+// --- 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.certsrv.system;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="DomainInfo")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SecurityDomainHost {
+ protected String host;
+ protected String securePort;
+ protected String secureAgentPort;
+ protected String secureAdminPort;
+ protected String secureEEClientAuthPort;
+ protected String unSecurePort;
+ protected String clone;
+ protected String subsystemName;
+ protected String domainManager;
+}
diff --git a/base/common/src/com/netscape/certsrv/system/SecurityDomainHostList.java b/base/common/src/com/netscape/certsrv/system/SecurityDomainHostList.java
new file mode 100644
index 000000000..375dee754
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/SecurityDomainHostList.java
@@ -0,0 +1,53 @@
+/**
+ *
+ */
+package com.netscape.certsrv.system;
+
+import java.util.Collection;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement
+public class SecurityDomainHostList {
+ protected Collection<SecurityDomainHost> systems;
+
+ @XmlElement(name="SubsystemCount")
+ protected int count;
+
+ /**
+ * @return the systems
+ */
+ @XmlElementRef
+ public Collection<SecurityDomainHost> getSystems() {
+ return systems;
+ }
+
+ /**
+ * @param systems the systems to set
+ */
+ public void setSystems(Collection<SecurityDomainHost> systems) {
+ this.systems = systems;
+ }
+
+ /**
+ * @return the count
+ */
+ public int getCount() {
+ return count;
+ }
+
+ /**
+ * @param count the count to set
+ */
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+
+}
diff --git a/base/common/src/com/netscape/certsrv/system/SystemCertData.java b/base/common/src/com/netscape/certsrv/system/SystemCertData.java
new file mode 100644
index 000000000..a509e3fb5
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/SystemCertData.java
@@ -0,0 +1,270 @@
+// --- 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.certsrv.system;
+
+import javax.ws.rs.core.MultivaluedMap;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * @author alee
+ *
+ */
+@XmlRootElement(name="SystemCertData")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class SystemCertData {
+ public static final String TAG = "tag";
+ public static final String NICKNAME = "nickname";
+ public static final String TOKEN = "token";
+ public static final String KEY_TYPE = "keyType";
+ public static final String KEY_ALGORITHM = "keyAlgorithm";
+ public static final String SIGNING_ALGORITHM = "signingAlgorithm";
+ public static final String KEY_SIZE = "keySize";
+ public static final String KEY_CURVENAME = "keyCurveName";
+ public static final String REQUEST = "request";
+ public static final String SUBJECT_DN = "subjectDN";
+ public static final String CERT = "cert";
+ public static final String CERT_CHAIN = "certChain";
+
+ @XmlElement
+ protected String tag;
+
+ @XmlElement
+ protected String nickname;
+
+ @XmlElement
+ protected String token;
+
+ @XmlElement
+ protected String keyType;
+
+ @XmlElement
+ protected String keyAlgorithm;
+
+ @XmlElement
+ protected String signingAlgorithm;
+
+ @XmlElement
+ protected String keySize;
+
+ @XmlElement
+ protected String keyCurveName;
+
+ @XmlElement
+ protected String request;
+
+ @XmlElement
+ protected String subjectDN;
+
+ @XmlElement
+ protected String cert;
+
+ @XmlElement
+ protected String certChain;
+
+ public SystemCertData() {
+ // required for JAXB
+ }
+
+ public SystemCertData(MultivaluedMap<String, String> form) {
+ tag = form.getFirst(TAG);
+ nickname = form.getFirst(NICKNAME);
+ token = form.getFirst(TOKEN);
+ keyType = form.getFirst(KEY_TYPE);
+ keyAlgorithm = form.getFirst(KEY_ALGORITHM);
+ signingAlgorithm = form.getFirst(SIGNING_ALGORITHM);
+ keySize = form.getFirst(KEY_SIZE);
+ keyCurveName = form.getFirst(KEY_CURVENAME);
+ request = form.getFirst(REQUEST);
+ subjectDN = form.getFirst(SUBJECT_DN);
+ cert = form.getFirst(CERT);
+ certChain = form.getFirst(CERT_CHAIN);
+ }
+
+ /**
+ * @return the tag
+ */
+ public String getTag() {
+ return tag;
+ }
+
+ /**
+ * @param tag the tag to set
+ */
+ public void setTag(String tag) {
+ this.tag = tag;
+ }
+
+ /**
+ * @return the nickname
+ */
+ public String getNickname() {
+ return nickname;
+ }
+
+ /**
+ * @param nickname the nickname to set
+ */
+ public void setNickname(String nickname) {
+ this.nickname = nickname;
+ }
+
+ /**
+ * @return the token
+ */
+ public String getToken() {
+ return token;
+ }
+
+ /**
+ * @param token the token to set
+ */
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ /**
+ * @return the keyType
+ */
+ public String getKeyType() {
+ return keyType;
+ }
+
+ /**
+ * @param keyType the keyType to set
+ */
+ public void setKeyType(String keyType) {
+ this.keyType = keyType;
+ }
+
+ /**
+ * @return the keyAlgorithm
+ */
+ public String getKeyAlgorithm() {
+ return keyAlgorithm;
+ }
+
+ /**
+ * @param keyAlgorithm the keyAlgorithm to set
+ */
+ public void setKeyAlgorithm(String keyAlgorithm) {
+ this.keyAlgorithm = keyAlgorithm;
+ }
+
+ /**
+ * @return the signingAlgorithm
+ */
+ public String getSigningAlgorithm() {
+ return signingAlgorithm;
+ }
+
+ /**
+ * @param signingAlgorithm the signingAlgorithm to set
+ */
+ public void setSigningAlgorithm(String signingAlgorithm) {
+ this.signingAlgorithm = signingAlgorithm;
+ }
+
+ /**
+ * @return the keySize
+ */
+ public String getKeySize() {
+ return keySize;
+ }
+
+ /**
+ * @param keySize the keySize to set
+ */
+ public void setKeySize(String keySize) {
+ this.keySize = keySize;
+ }
+
+ /**
+ * @return the keyCurveName
+ */
+ public String getKeyCurveName() {
+ return keyCurveName;
+ }
+
+ /**
+ * @param keyCurveName the keyCurveName to set
+ */
+ public void setKeyCurveName(String keyCurveName) {
+ this.keyCurveName = keyCurveName;
+ }
+
+ /**
+ * @return the request
+ */
+ public String getRequest() {
+ return request;
+ }
+
+ /**
+ * @param request the request to set
+ */
+ public void setRequest(String request) {
+ this.request = request;
+ }
+
+ /**
+ * @return the subjectDN
+ */
+ public String getSubjectDN() {
+ return subjectDN;
+ }
+
+ /**
+ * @param subjectDN the subjectDN to set
+ */
+ public void setSubjectDN(String subjectDN) {
+ this.subjectDN = subjectDN;
+ }
+
+ /**
+ * @return the cert
+ */
+ public String getCert() {
+ return cert;
+ }
+
+ /**
+ * @param cert the cert to set
+ */
+ public void setCert(String cert) {
+ this.cert = cert;
+ }
+
+ /**
+ * @return the certChain
+ */
+ public String getCertChain() {
+ return certChain;
+ }
+
+ /**
+ * @param certChain the certChain to set
+ */
+ public void setCertChain(String certChain) {
+ this.certChain = certChain;
+ }
+
+}
diff --git a/base/common/src/com/netscape/certsrv/system/SystemCertificateResource.java b/base/common/src/com/netscape/certsrv/system/SystemCertificateResource.java
new file mode 100644
index 000000000..1096520fc
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/SystemCertificateResource.java
@@ -0,0 +1,25 @@
+package com.netscape.certsrv.system;
+
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import org.jboss.resteasy.annotations.ClientResponseType;
+
+import com.netscape.certsrv.cert.CertData;
+
+@Path("config/cert")
+public interface SystemCertificateResource {
+
+ /**
+ * Used to retrieve the transport certificate
+ */
+ @GET
+ @Path("transport")
+ @ClientResponseType(entityType=CertData.class)
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public Response getTransportCert();
+
+} \ No newline at end of file
diff --git a/base/common/src/com/netscape/certsrv/system/SystemConfigResource.java b/base/common/src/com/netscape/certsrv/system/SystemConfigResource.java
new file mode 100644
index 000000000..4ecafc6f7
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/system/SystemConfigResource.java
@@ -0,0 +1,58 @@
+// --- 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.certsrv.system;
+
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+
+
+/**
+ * @author alee
+ */
+@Path("installer")
+public interface SystemConfigResource {
+
+ @POST
+ @Path("configure")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_FORM_URLENCODED })
+ public ConfigurationResponse configure(MultivaluedMap<String, String> form);
+
+ @POST
+ @Path("configure")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public ConfigurationResponse configure(ConfigurationRequest data);
+
+ @POST
+ @Path("installToken")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public InstallToken getInstallToken(InstallTokenRequest data);
+
+ @GET
+ @Path("domainInfo")
+ @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
+ public DomainInfo getDomainInfo();
+}