summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java75
-rw-r--r--base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java121
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyClient.java75
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyDataInfo.java43
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyDataInfos.java15
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java69
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java120
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyRequestResource.java14
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyResource.java8
-rw-r--r--base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java36
-rw-r--r--base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java26
-rw-r--r--base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java25
-rw-r--r--base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java15
-rw-r--r--base/common/src/com/netscape/cms/servlet/key/KeyService.java19
-rw-r--r--base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java19
-rw-r--r--base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java15
-rw-r--r--base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java2
-rw-r--r--base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java111
-rw-r--r--base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java107
-rw-r--r--base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java120
-rw-r--r--base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java2
-rw-r--r--base/kra/shared/webapps/kra/WEB-INF/web.xml2
22 files changed, 938 insertions, 101 deletions
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java b/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java
index d11e94543..0d887a871 100644
--- a/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java
+++ b/base/common/src/com/netscape/certsrv/cert/CertRequestInfo.java
@@ -18,6 +18,12 @@
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.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
@@ -25,6 +31,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import com.netscape.certsrv.dbs.certdb.CertId;
import com.netscape.certsrv.request.CMSRequestInfo;
+import com.netscape.certsrv.request.RequestStatus;
@XmlRootElement(name = "CertRequestInfo")
@XmlAccessorType(XmlAccessType.FIELD)
@@ -82,4 +89,72 @@ public class CertRequestInfo extends CMSRequestInfo {
return new CertId(id);
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((certRequestType == null) ? 0 : certRequestType.hashCode());
+ result = prime * result + ((certURL == null) ? 0 : certURL.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;
+ CertRequestInfo other = (CertRequestInfo) obj;
+ if (certRequestType == null) {
+ if (other.certRequestType != null)
+ return false;
+ } else if (!certRequestType.equals(other.certRequestType))
+ return false;
+ if (certURL == null) {
+ if (other.certURL != null)
+ return false;
+ } else if (!certURL.equals(other.certURL))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ Marshaller marshaller = JAXBContext.newInstance(CertRequestInfo.class).createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static CertRequestInfo valueOf(String string) throws Exception {
+ try {
+ Unmarshaller unmarshaller = JAXBContext.newInstance(CertRequestInfo.class).createUnmarshaller();
+ return (CertRequestInfo)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ CertRequestInfo before = new CertRequestInfo();
+ before.setRequestType("enrollment");
+ before.setRequestStatus(RequestStatus.COMPLETE);
+ before.setCertRequestType("pkcs10");
+
+ String string = before.toString();
+ System.out.println(string);
+
+ CertRequestInfo after = CertRequestInfo.valueOf(string);
+ System.out.println(after);
+
+ System.out.println(before.equals(after));
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java b/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java
index 028bff583..a6a520c23 100644
--- a/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java
+++ b/base/common/src/com/netscape/certsrv/cert/CertRequestInfos.java
@@ -17,24 +17,38 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.cert;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import javax.xml.bind.JAXBContext;
+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.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import com.netscape.certsrv.base.Link;
+import com.netscape.certsrv.request.RequestStatus;
@XmlRootElement(name = "CertRequestInfos")
+@XmlAccessorType(XmlAccessType.FIELD)
public class CertRequestInfos {
- protected Collection<CertRequestInfo> requests;
- protected List<Link> links;
+
+ @XmlElementRef
+ protected Collection<CertRequestInfo> requests = new ArrayList<CertRequestInfo>();
+
+ @XmlElement(name = "Links")
+ protected List<Link> links = new ArrayList<Link>();
/**
* @return the requests
*/
- @XmlElementRef
public Collection<CertRequestInfo> getRequests() {
return requests;
}
@@ -43,13 +57,21 @@ public class CertRequestInfos {
* @param requests the requests to set
*/
public void setRequests(Collection<CertRequestInfo> requests) {
- this.requests = requests;
+ this.requests.clear();
+ if (requests == null) return;
+ this.requests.addAll(requests);
+ }
+
+ /**
+ * @param requests the request to add
+ */
+ public void addRequest(CertRequestInfo request) {
+ requests.add(request);
}
/**
* @return the links
*/
- @XmlElementRef
public List<Link> getLinks() {
return links;
}
@@ -58,14 +80,20 @@ public class CertRequestInfos {
* @param links the links to set
*/
public void setLinks(List<Link> links) {
- this.links = links;
+ this.links.clear();
+ if (links == null) return;
+ this.links.addAll(links);
+ }
+
+ /**
+ * @param links the link to add
+ */
+ public void addLink(Link link) {
+ links.add(link);
}
@XmlTransient
public String getNext() {
- if (links == null) {
- return null;
- }
for (Link link : links) {
if ("next".equals(link.getRelationship())) {
return link.getHref();
@@ -76,9 +104,6 @@ public class CertRequestInfos {
@XmlTransient
public String getPrevious() {
- if (links == null) {
- return null;
- }
for (Link link : links) {
if ("previous".equals(link.getRelationship())) {
return link.getHref();
@@ -86,4 +111,76 @@ public class CertRequestInfos {
}
return null;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((links == null) ? 0 : links.hashCode());
+ result = prime * result + ((requests == null) ? 0 : requests.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;
+ CertRequestInfos other = (CertRequestInfos) obj;
+ if (links == null) {
+ if (other.links != null)
+ return false;
+ } else if (!links.equals(other.links))
+ return false;
+ if (requests == null) {
+ if (other.requests != null)
+ return false;
+ } else if (!requests.equals(other.requests))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ Marshaller marshaller = JAXBContext.newInstance(CertRequestInfos.class).createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static CertRequestInfos valueOf(String string) throws Exception {
+ try {
+ Unmarshaller unmarshaller = JAXBContext.newInstance(CertRequestInfos.class).createUnmarshaller();
+ return (CertRequestInfos)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ CertRequestInfos before = new CertRequestInfos();
+
+ CertRequestInfo request = new CertRequestInfo();
+ request.setRequestType("enrollment");
+ request.setRequestStatus(RequestStatus.COMPLETE);
+ request.setCertRequestType("pkcs10");
+ before.addRequest(request);
+
+ String string = before.toString();
+ System.out.println(string);
+
+ CertRequestInfos after = CertRequestInfos.valueOf(string);
+ System.out.println(after);
+
+ System.out.println(request.equals(after));
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyClient.java b/base/common/src/com/netscape/certsrv/key/KeyClient.java
new file mode 100644
index 000000000..ce2946c1e
--- /dev/null
+++ b/base/common/src/com/netscape/certsrv/key/KeyClient.java
@@ -0,0 +1,75 @@
+//--- 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.net.URISyntaxException;
+
+import com.netscape.certsrv.client.ClientConfig;
+import com.netscape.certsrv.client.PKIClient;
+import com.netscape.certsrv.client.PKIConnection;
+import com.netscape.certsrv.request.RequestId;
+
+/**
+ * @author Endi S. Dewata
+ */
+public class KeyClient extends PKIClient {
+
+ public KeyResource keyClient;
+ public KeyRequestResource keyRequestClient;
+
+ public KeyClient(PKIConnection connection) throws URISyntaxException {
+ super(connection);
+ init();
+ }
+
+ public KeyClient(ClientConfig config) throws URISyntaxException {
+ super(config);
+ init();
+ }
+
+ public void init() throws URISyntaxException {
+ keyClient = createProxy(KeyResource.class);
+ keyRequestClient = createProxy(KeyRequestResource.class);
+ }
+
+ public KeyDataInfos findKeys(String clientID, String status, Integer maxSize, Integer maxTime) {
+ return keyClient.listKeys(clientID, status, maxSize, maxTime);
+ }
+
+ public KeyData retrieveKey(KeyRecoveryRequest data) {
+ return keyClient.retrieveKey(data);
+ }
+
+ public KeyRequestInfos findKeyRequests(
+ String requestState,
+ String requestType,
+ String clientID,
+ RequestId start,
+ Integer pageSize,
+ Integer maxResults,
+ Integer maxTime) {
+ return keyRequestClient.listRequests(
+ requestState,
+ requestType,
+ clientID,
+ start,
+ pageSize,
+ maxResults,
+ maxTime);
+ }
+}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java b/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java
index 3af348ef3..09d228718 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyDataInfo.java
@@ -42,6 +42,18 @@ public class KeyDataInfo {
@XmlElement
protected String clientID;
+ @XmlElement
+ protected String status;
+
+ @XmlElement
+ protected String algorithm;
+
+ @XmlElement
+ protected Integer size;
+
+ @XmlElement
+ protected String ownerName;
+
public KeyDataInfo() {
// required for JAXB (defaults)
}
@@ -82,4 +94,35 @@ public class KeyDataInfo {
this.clientID = clientID;
}
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ public void setAlgorithm(String algorithm) {
+ this.algorithm = algorithm;
+ }
+
+ public Integer getSize() {
+ return size;
+ }
+
+ public void setSize(Integer size) {
+ this.size = size;
+ }
+
+ public String getOwnerName() {
+ return ownerName;
+ }
+
+ public void setOwnerName(String ownerName) {
+ this.ownerName = ownerName;
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java b/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java
index 4e82f27b5..d9fc885b4 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyDataInfos.java
@@ -17,6 +17,7 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.key;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -29,8 +30,8 @@ import com.netscape.certsrv.base.Link;
@XmlRootElement(name = "KeyDataInfos")
public class KeyDataInfos {
- protected Collection<KeyDataInfo> keyInfos;
- protected List<Link> links;
+ protected Collection<KeyDataInfo> keyInfos = new ArrayList<KeyDataInfo>();
+ protected List<Link> links = new ArrayList<Link>();
/**
* @return the keyInfos
@@ -39,12 +40,21 @@ public class KeyDataInfos {
public Collection<KeyDataInfo> getKeyInfos() {
return keyInfos;
}
+
/**
* @param keyInfos the keyInfos to set
*/
public void setKeyInfos(Collection<KeyDataInfo> keyInfos) {
this.keyInfos = keyInfos;
}
+
+ /**
+ * @param keyInfo the keyInfo to add
+ */
+ public void addKeyInfo(KeyDataInfo keyInfo) {
+ keyInfos.add(keyInfo);
+ }
+
/**
* @return the links
*/
@@ -52,6 +62,7 @@ public class KeyDataInfos {
public List<Link> getLinks() {
return links;
}
+
/**
* @param links the links to set
*/
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java b/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java
index f18e60e64..d9e5fbf1c 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyRequestInfo.java
@@ -18,6 +18,12 @@
package com.netscape.certsrv.key;
+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.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
@@ -25,6 +31,7 @@ import javax.xml.bind.annotation.XmlRootElement;
import com.netscape.certsrv.dbs.keydb.KeyId;
import com.netscape.certsrv.request.CMSRequestInfo;
+import com.netscape.certsrv.request.RequestStatus;
@XmlRootElement(name = "KeyRequestInfo")
@XmlAccessorType(XmlAccessType.FIELD)
@@ -58,4 +65,66 @@ public class KeyRequestInfo extends CMSRequestInfo {
public void setKeyURL(String keyURL) {
this.keyURL = keyURL;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + ((keyURL == null) ? 0 : keyURL.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ KeyRequestInfo other = (KeyRequestInfo) obj;
+ if (keyURL == null) {
+ if (other.keyURL != null)
+ return false;
+ } else if (!keyURL.equals(other.keyURL))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ Marshaller marshaller = JAXBContext.newInstance(KeyRequestInfo.class).createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static KeyRequestInfo valueOf(String string) throws Exception {
+ try {
+ Unmarshaller unmarshaller = JAXBContext.newInstance(KeyRequestInfo.class).createUnmarshaller();
+ return (KeyRequestInfo)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ KeyRequestInfo before = new KeyRequestInfo();
+ before.setRequestType("securityDataEnrollment");
+ before.setRequestStatus(RequestStatus.COMPLETE);
+
+ String string = before.toString();
+ System.out.println(string);
+
+ KeyRequestInfo after = KeyRequestInfo.valueOf(string);
+ System.out.println(after);
+
+ System.out.println(before.equals(after));
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java b/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java
index 1fbd363d3..90756f8d3 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyRequestInfos.java
@@ -17,24 +17,38 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.key;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import javax.xml.bind.JAXBContext;
+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.XmlElementRef;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlTransient;
import com.netscape.certsrv.base.Link;
+import com.netscape.certsrv.request.RequestStatus;
@XmlRootElement(name = "KeyRequestInfos")
+@XmlAccessorType(XmlAccessType.FIELD)
public class KeyRequestInfos {
- protected Collection<KeyRequestInfo> requests;
- protected List<Link> links;
+
+ @XmlElementRef
+ protected Collection<KeyRequestInfo> requests = new ArrayList<KeyRequestInfo>();
+
+ @XmlElement(name = "Link")
+ protected List<Link> links = new ArrayList<Link>();
/**
* @return the requests
*/
- @XmlElementRef
public Collection<KeyRequestInfo> getRequests() {
return requests;
}
@@ -43,13 +57,21 @@ public class KeyRequestInfos {
* @param requests the requests to set
*/
public void setRequests(Collection<KeyRequestInfo> requests) {
- this.requests = requests;
+ this.requests.clear();
+ if (requests == null) return;
+ this.requests.addAll(requests);
+ }
+
+ /**
+ * @param request the request to add
+ */
+ public void addRequest(KeyRequestInfo request) {
+ requests.add(request);
}
/**
* @return the links
*/
- @XmlElementRef
public List<Link> getLinks() {
return links;
}
@@ -58,14 +80,20 @@ public class KeyRequestInfos {
* @param links the links to set
*/
public void setLinks(List<Link> links) {
- this.links = links;
+ this.links.clear();
+ if (links == null) return;
+ this.links.addAll(links);
+ }
+
+ /**
+ * @param links the link to add
+ */
+ public void addLink(Link link) {
+ this.links.add(link);
}
@XmlTransient
public String getNext() {
- if (links == null) {
- return null;
- }
for (Link link : links) {
if ("next".equals(link.getRelationship())) {
return link.getHref();
@@ -76,9 +104,6 @@ public class KeyRequestInfos {
@XmlTransient
public String getPrevious() {
- if (links == null) {
- return null;
- }
for (Link link : links) {
if ("previous".equals(link.getRelationship())) {
return link.getHref();
@@ -86,4 +111,75 @@ public class KeyRequestInfos {
}
return null;
}
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((links == null) ? 0 : links.hashCode());
+ result = prime * result + ((requests == null) ? 0 : requests.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;
+ KeyRequestInfos other = (KeyRequestInfos) obj;
+ if (links == null) {
+ if (other.links != null)
+ return false;
+ } else if (!links.equals(other.links))
+ return false;
+ if (requests == null) {
+ if (other.requests != null)
+ return false;
+ } else if (!requests.equals(other.requests))
+ return false;
+ return true;
+ }
+
+ public String toString() {
+ try {
+ StringWriter sw = new StringWriter();
+ Marshaller marshaller = JAXBContext.newInstance(KeyRequestInfos.class).createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
+ marshaller.marshal(this, sw);
+ return sw.toString();
+
+ } catch (Exception e) {
+ return super.toString();
+ }
+ }
+
+ public static KeyRequestInfos valueOf(String string) throws Exception {
+ try {
+ Unmarshaller unmarshaller = JAXBContext.newInstance(KeyRequestInfos.class).createUnmarshaller();
+ return (KeyRequestInfos)unmarshaller.unmarshal(new StringReader(string));
+ } catch (Exception e) {
+ return null;
+ }
+ }
+
+ public static void main(String args[]) throws Exception {
+
+ KeyRequestInfos before = new KeyRequestInfos();
+
+ KeyRequestInfo request = new KeyRequestInfo();
+ request.setRequestType("securityDataEnrollment");
+ request.setRequestStatus(RequestStatus.COMPLETE);
+ before.addRequest(request);
+
+ String string = before.toString();
+ System.out.println(string);
+
+ KeyRequestInfos after = KeyRequestInfos.valueOf(string);
+ System.out.println(after);
+
+ System.out.println(before.equals(after));
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java b/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java
index 7fecd0610..356fd1569 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyRequestResource.java
@@ -1,7 +1,6 @@
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;
@@ -20,11 +19,6 @@ public interface KeyRequestResource {
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
*/
@@ -33,10 +27,10 @@ public interface KeyRequestResource {
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);
+ @QueryParam("start") RequestId start,
+ @QueryParam("pageSize") Integer pageSize,
+ @QueryParam("maxResults") Integer maxResults,
+ @QueryParam("maxTime") Integer maxTime);
/**
diff --git a/base/common/src/com/netscape/certsrv/key/KeyResource.java b/base/common/src/com/netscape/certsrv/key/KeyResource.java
index a499ca11f..50fe82cc3 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyResource.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyResource.java
@@ -1,7 +1,6 @@
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;
@@ -14,15 +13,12 @@ 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);
+ @QueryParam("maxResults") Integer maxResults,
+ @QueryParam("maxTime") Integer maxTime);
/**
diff --git a/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java b/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java
index 0be24fbb4..f7b34f0a2 100644
--- a/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java
+++ b/base/common/src/com/netscape/certsrv/request/CMSRequestInfo.java
@@ -85,4 +85,40 @@ public class CMSRequestInfo {
this.requestURL = requestURL;
}
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((requestStatus == null) ? 0 : requestStatus.hashCode());
+ result = prime * result + ((requestType == null) ? 0 : requestType.hashCode());
+ result = prime * result + ((requestURL == null) ? 0 : requestURL.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;
+ CMSRequestInfo other = (CMSRequestInfo) obj;
+ if (requestStatus == null) {
+ if (other.requestStatus != null)
+ return false;
+ } else if (!requestStatus.equals(other.requestStatus))
+ return false;
+ if (requestType == null) {
+ if (other.requestType != null)
+ return false;
+ } else if (!requestType.equals(other.requestType))
+ return false;
+ if (requestURL == null) {
+ if (other.requestURL != null)
+ return false;
+ } else if (!requestURL.equals(other.requestURL))
+ return false;
+ return true;
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java b/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java
index cb07caf71..7e9445dbc 100644
--- a/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java
+++ b/base/common/src/com/netscape/certsrv/request/CMSRequestInfos.java
@@ -17,6 +17,7 @@
//--- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.request;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -25,8 +26,8 @@ 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;
+ protected Collection<CMSRequestInfo> requests = new ArrayList<CMSRequestInfo>();
+ protected List<Link> links = new ArrayList<Link>();
/**
* @return the requests
@@ -39,7 +40,16 @@ public class CMSRequestInfos {
* @param requests the requests to set
*/
public void setRequests(Collection<CMSRequestInfo> requests) {
- this.requests = requests;
+ this.requests.clear();
+ if (requests == null) return;
+ this.requests.addAll(requests);
+ }
+
+ /**
+ * @param requests the requests to add
+ */
+ public void addRequest(CMSRequestInfo request) {
+ requests.add(request);
}
/**
@@ -53,7 +63,15 @@ public class CMSRequestInfos {
* @param links the links to set
*/
public void setLinks(List<Link> links) {
- this.links = links;
+ this.links.clear();
+ if (links == null) return;
+ this.links.addAll(links);
}
+ /**
+ * @param links the link to add
+ */
+ public void addLink(Link link) {
+ links.add(link);
+ }
}
diff --git a/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java b/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java
index bcb19a70b..4d0fc38b2 100644
--- a/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java
+++ b/base/common/src/com/netscape/cms/servlet/cert/CertRequestDAO.java
@@ -17,7 +17,6 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.cms.servlet.cert;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -92,28 +91,20 @@ public class CertRequestDAO extends CMSRequestDAO {
public CertRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime,
UriInfo uriInfo) throws EBaseException {
- CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo);
-
CertRequestInfos ret = new CertRequestInfos();
- if (cmsInfos == null) {
- ret.setRequests(null);
- ret.setLinks(null);
- return ret;
- }
+ CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo);
- List<CertRequestInfo> list = new ArrayList<CertRequestInfo>();
- ;
Collection<? extends CMSRequestInfo> cmsList = cmsInfos.getRequests();
// We absolutely know 100% that this list is a list
// of CertRequestInfo objects. This is because the method
// createCMSRequestInfo. Is the only one adding to it
- list = (List<CertRequestInfo>) cmsList;
+ List<CertRequestInfo> list = (List<CertRequestInfo>) cmsList;
+ ret.setRequests(list);
ret.setLinks(cmsInfos.getLinks());
- ret.setRequests(list);
return ret;
}
@@ -176,6 +167,9 @@ public class CertRequestDAO extends CMSRequestDAO {
*/
public CertRequestInfos submitRequest(CertEnrollmentRequest data, HttpServletRequest request, UriInfo uriInfo,
Locale locale) throws EBaseException {
+
+ CertRequestInfos ret = new CertRequestInfos();
+
HashMap<String, Object> results = null;
if (data.getIsRenewal()) {
RenewalProcessor processor = new RenewalProcessor("caProfileSubmit", locale);
@@ -185,16 +179,13 @@ public class CertRequestDAO extends CMSRequestDAO {
results = processor.processEnrollment(data, request);
}
- CertRequestInfos ret = new CertRequestInfos();
- ArrayList<CertRequestInfo> infos = new ArrayList<CertRequestInfo>();
IRequest reqs[] = (IRequest[]) results.get(Processor.ARG_REQUESTS);
for (IRequest req : reqs) {
CertRequestInfo info = CertRequestInfoFactory.create(req, uriInfo);
- infos.add(info);
+ ret.addRequest(info);
}
+
// TODO - what happens if the errorCode is internal error ?
- ret.setRequests(infos);
- ret.setLinks(null);
return ret;
}
diff --git a/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java b/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java
index e64bcb2dc..bef0455a9 100644
--- a/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java
+++ b/base/common/src/com/netscape/cms/servlet/key/KeyRequestDAO.java
@@ -17,7 +17,6 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.cms.servlet.key;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.Hashtable;
@@ -85,30 +84,22 @@ public class KeyRequestDAO extends CMSRequestDAO {
public KeyRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime,
UriInfo uriInfo) throws EBaseException {
- CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo);
KeyRequestInfos ret = new KeyRequestInfos();
- if (cmsInfos == null) {
- ret.setRequests(null);
- ret.setLinks(null);
- return ret;
- }
+ CMSRequestInfos cmsInfos = listCMSRequests(filter, start, pageSize, maxResults, maxTime, uriInfo);
- List<KeyRequestInfo> list = new ArrayList<KeyRequestInfo>();
- ;
Collection<? extends CMSRequestInfo> cmsList = cmsInfos.getRequests();
// We absolutely know 100% that this list is a list
// of KeyRequestInfo objects. This is because the method
// createCMSRequestInfo. Is the only one adding to it
- list = (List<KeyRequestInfo>) cmsList;
+ List<KeyRequestInfo> list = (List<KeyRequestInfo>) cmsList;
+ ret.setRequests(list);
ret.setLinks(cmsInfos.getLinks());
- ret.setRequests(list);
return ret;
-
}
/**
diff --git a/base/common/src/com/netscape/cms/servlet/key/KeyService.java b/base/common/src/com/netscape/cms/servlet/key/KeyService.java
index 4db2fed0a..fe82d5fcd 100644
--- a/base/common/src/com/netscape/cms/servlet/key/KeyService.java
+++ b/base/common/src/com/netscape/cms/servlet/key/KeyService.java
@@ -20,10 +20,8 @@ package com.netscape.cms.servlet.key;
import java.math.BigInteger;
-import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Hashtable;
-import java.util.List;
import javax.ws.rs.Path;
import javax.ws.rs.WebApplicationException;
@@ -56,6 +54,9 @@ import com.netscape.cmsutil.ldap.LDAPUtil;
*/
public class KeyService extends PKIService implements KeyResource{
+ public static final int DEFAULT_MAXRESULTS = 100;
+ public static final int DEFAULT_MAXTIME = 10;
+
private IKeyRepository repo;
private IKeyRecoveryAuthority kra;
private IRequestQueue queue;
@@ -245,16 +246,18 @@ public class KeyService extends PKIService implements KeyResource{
/**
* Used to generate list of key infos based on the search parameters
*/
- public KeyDataInfos listKeys(String clientID, String status, int maxResults, int maxTime) {
+ public KeyDataInfos listKeys(String clientID, String status, Integer maxResults, Integer maxTime) {
// auth and authz
// get ldap filter
String filter = createSearchFilter(status, clientID);
CMS.debug("listKeys: filter is " + filter);
+ maxResults = maxResults == null ? DEFAULT_MAXRESULTS : maxResults;
+ maxTime = maxTime == null ? DEFAULT_MAXTIME : maxTime;
+
KeyDataInfos infos = new KeyDataInfos();
try {
- List <KeyDataInfo> list = new ArrayList<KeyDataInfo>();
Enumeration<IKeyRecord> e = null;
e = repo.searchKeys(filter, maxResults, maxTime);
@@ -265,11 +268,10 @@ public class KeyService extends PKIService implements KeyResource{
while (e.hasMoreElements()) {
IKeyRecord rec = e.nextElement();
if (rec != null) {
- list.add(createKeyDataInfo(rec));
+ infos.addKeyInfo(createKeyDataInfo(rec));
}
}
- infos.setKeyInfos(list);
} catch (EBaseException e) {
e.printStackTrace();
throw new WebApplicationException(Response.Status.INTERNAL_SERVER_ERROR);
@@ -280,6 +282,11 @@ public class KeyService extends PKIService implements KeyResource{
public KeyDataInfo createKeyDataInfo(IKeyRecord rec) throws EBaseException {
KeyDataInfo ret = new KeyDataInfo();
+ ret.setClientID(rec.getClientId());
+ ret.setStatus(rec.getKeyStatus());
+ ret.setAlgorithm(rec.getAlgorithm());
+ ret.setSize(rec.getKeySize());
+ ret.setOwnerName(rec.getOwnerName());
Path keyPath = KeyResource.class.getAnnotation(Path.class);
BigInteger serial = rec.getSerialNumber();
diff --git a/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java b/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java
index f7c9f7aae..e54f8a4c6 100644
--- a/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java
+++ b/base/common/src/com/netscape/cms/servlet/request/CMSRequestDAO.java
@@ -18,8 +18,6 @@
package com.netscape.cms.servlet.request;
import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.UriBuilder;
@@ -84,8 +82,8 @@ public abstract class CMSRequestDAO {
*/
public CMSRequestInfos listCMSRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime,
UriInfo uriInfo) throws EBaseException {
- List<CMSRequestInfo> list = new ArrayList<CMSRequestInfo>();
- List<Link> links = new ArrayList<Link>();
+
+ CMSRequestInfos ret = new CMSRequestInfos();
int totalSize = 0;
int current = 0;
@@ -100,7 +98,7 @@ public abstract class CMSRequestDAO {
for (int i = 0; i < numRecords; i++) {
IRequest request = vlvlist.getElementAt(i);
- list.add(createCMSRequestInfo(request, uriInfo));
+ ret.addRequest(createCMSRequestInfo(request, uriInfo));
}
} else {
// The non-vlv requests are indexed, but are not paginated.
@@ -109,13 +107,13 @@ public abstract class CMSRequestDAO {
IRequestList requests = queue.listRequestsByFilter(filter, maxResults, maxTime);
if (requests == null) {
- return null;
+ return ret;
}
while (requests.hasMoreElements()) {
RequestId rid = requests.nextElement();
IRequest request = queue.findRequest(rid);
if (request != null) {
- list.add(createCMSRequestInfo(request, uriInfo));
+ ret.addRequest(createCMSRequestInfo(request, uriInfo));
}
}
}
@@ -137,7 +135,7 @@ public abstract class CMSRequestDAO {
int next = current + pageSize + 1;
URI nextUri = builder.clone().build(next, pageSize);
Link nextLink = new Link("next", nextUri.toString(), "application/xml");
- links.add(nextLink);
+ ret.addLink(nextLink);
}
// previous link
@@ -145,12 +143,9 @@ public abstract class CMSRequestDAO {
int previous = current - pageSize;
URI previousUri = builder.clone().build(previous, pageSize);
Link previousLink = new Link("previous", previousUri.toString(), "application/xml");
- links.add(previousLink);
+ ret.addLink(previousLink);
}
- CMSRequestInfos ret = new CMSRequestInfos();
- ret.setRequests(list);
- ret.setLinks(links);
return ret;
}
diff --git a/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java b/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java
index 775c0ed28..12f3bb7ee 100644
--- a/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java
+++ b/base/common/src/com/netscape/cms/servlet/request/KeyRequestService.java
@@ -42,6 +42,11 @@ import com.netscape.cmsutil.ldap.LDAPUtil;
*/
public class KeyRequestService extends PKIService implements KeyRequestResource {
+ 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 retrieve key request info for a specific request
*/
@@ -169,17 +174,17 @@ public class KeyRequestService extends PKIService implements KeyRequestResource
* Used to generate list of key requests based on the search parameters
*/
public KeyRequestInfos listRequests(String requestState, String requestType, String clientID,
- RequestId start, int pageSize, int maxResults, int maxTime) {
+ RequestId start, Integer pageSize, Integer maxResults, Integer maxTime) {
// auth and authz
// get ldap filter
String filter = createSearchFilter(requestState, requestType, clientID);
CMS.debug("listRequests: filter is " + filter);
- // get start marker
- if (start == null) {
- start = new RequestId(KeyRequestResource.DEFAULT_START);
- }
+ start = start == null ? new RequestId(KeyRequestService.DEFAULT_START) : start;
+ pageSize = pageSize == null ? DEFAULT_PAGESIZE : pageSize;
+ maxResults = maxResults == null ? DEFAULT_MAXRESULTS : maxResults;
+ maxTime = maxTime == null ? DEFAULT_MAXTIME : maxTime;
KeyRequestDAO reqDAO = new KeyRequestDAO();
KeyRequestInfos requests;
diff --git a/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java b/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
index d7cb293a7..2e661fcc6 100644
--- a/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/cli/MainCLI.java
@@ -35,6 +35,7 @@ import com.netscape.certsrv.client.ClientConfig;
import com.netscape.certsrv.client.PKIConnection;
import com.netscape.cmstools.cert.CertCLI;
import com.netscape.cmstools.group.GroupCLI;
+import com.netscape.cmstools.key.KeyCLI;
import com.netscape.cmstools.system.SecurityDomainCLI;
import com.netscape.cmstools.user.UserCLI;
@@ -53,6 +54,7 @@ public class MainCLI extends CLI {
addModule(new CertCLI(this));
addModule(new GroupCLI(this));
+ addModule(new KeyCLI(this));
addModule(new SecurityDomainCLI(this));
addModule(new UserCLI(this));
}
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
new file mode 100644
index 000000000..f3922d5da
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyCLI.java
@@ -0,0 +1,111 @@
+// --- 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.cmstools.key;
+
+import java.util.Arrays;
+
+import org.apache.commons.lang.StringUtils;
+
+import com.netscape.certsrv.key.KeyClient;
+import com.netscape.certsrv.key.KeyDataInfo;
+import com.netscape.certsrv.key.KeyRequestInfo;
+import com.netscape.cmstools.cli.CLI;
+import com.netscape.cmstools.cli.MainCLI;
+
+/**
+ * @author Endi S. Dewata
+ */
+public class KeyCLI extends CLI {
+
+ public MainCLI parent;
+ public KeyClient keyClient;
+
+ public KeyCLI(MainCLI parent) {
+ super("key", "Key management commands");
+ this.parent = parent;
+
+ addModule(new KeyFindCLI(this));
+ addModule(new KeyRequestFindCLI(this));
+ }
+
+ public void printHelp() {
+
+ System.out.println("Commands:");
+
+ int leftPadding = 1;
+ int rightPadding = 25;
+
+ for (CLI module : modules.values()) {
+ String label = name + "-" + module.getName();
+
+ int padding = rightPadding - leftPadding - label.length();
+ if (padding < 1)
+ padding = 1;
+
+ System.out.print(StringUtils.repeat(" ", leftPadding));
+ System.out.print(label);
+ System.out.print(StringUtils.repeat(" ", padding));
+ System.out.println(module.getDescription());
+ }
+ }
+
+ public void execute(String[] args) throws Exception {
+
+ keyClient = new KeyClient(parent.connection);
+
+ if (args.length == 0) {
+ printHelp();
+ System.exit(1);
+ }
+
+ String command = args[0];
+ String[] commandArgs = Arrays.copyOfRange(args, 1, args.length);
+
+ if (command == null) {
+ printHelp();
+ System.exit(1);
+ }
+
+ CLI module = getModule(command);
+ if (module != null) {
+ module.execute(commandArgs);
+
+ } else {
+ System.err.println("Error: Invalid command \"" + command + "\"");
+ printHelp();
+ System.exit(1);
+ }
+ }
+
+ public static void printKeyInfo(KeyDataInfo info) {
+ System.out.println(" Key ID: "+info.getKeyId().toHexString());
+ if (info.getClientID() != null) System.out.println(" Client ID: "+info.getClientID());
+ if (info.getStatus() != null) System.out.println(" Status: "+info.getStatus());
+ if (info.getAlgorithm() != null) System.out.println(" Algorithm: "+info.getAlgorithm());
+ if (info.getSize() != null) System.out.println(" Size: "+info.getSize());
+ if (info.getOwnerName() != null) System.out.println(" Owner: "+info.getOwnerName());
+ }
+
+ public static void printKeyRequestInfo(KeyRequestInfo info) {
+ System.out.println(" Request ID: "+info.getRequestId().toHexString());
+ if (info.getKeyId() != null) System.out.println(" Key ID: "+info.getKeyId().toHexString());
+ if (info.getRequestType() != null) System.out.println(" Type: "+info.getRequestType());
+ if (info.getRequestStatus() != null) System.out.println(" Status: "+info.getRequestStatus());
+ }
+}
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java
new file mode 100644
index 000000000..014a9b60e
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyFindCLI.java
@@ -0,0 +1,107 @@
+// --- 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.cmstools.key;
+
+import java.util.Collection;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.ParseException;
+
+import com.netscape.certsrv.key.KeyDataInfo;
+import com.netscape.certsrv.key.KeyDataInfos;
+import com.netscape.cmstools.cli.CLI;
+import com.netscape.cmstools.cli.MainCLI;
+
+/**
+ * @author Endi S. Dewata
+ */
+public class KeyFindCLI extends CLI {
+
+ public KeyCLI parent;
+
+ public KeyFindCLI(KeyCLI parent) {
+ super("find", "Find keys");
+ this.parent = parent;
+ }
+
+ public void printHelp() {
+ formatter.printHelp(parent.name + "-" + name + " [OPTIONS...]", options);
+ }
+
+ public void execute(String[] args) {
+
+ Option option = new Option(null, "client", true, "Client ID");
+ option.setArgName("client ID");
+ options.addOption(option);
+
+ option = new Option(null, "status", true, "Status");
+ option.setArgName("status");
+ options.addOption(option);
+
+ option = new Option(null, "maxResults", true, "Maximum results");
+ option.setArgName("max results");
+ options.addOption(option);
+
+ option = new Option(null, "maxTime", true, "Maximum time");
+ option.setArgName("max time");
+ options.addOption(option);
+
+ CommandLine cmd = null;
+
+ try {
+ cmd = parser.parse(options, args);
+
+ } catch (ParseException e) {
+ System.err.println("Error: " + e.getMessage());
+ printHelp();
+ System.exit(1);
+ }
+
+ String clientID = cmd.getOptionValue("client");
+ String status = cmd.getOptionValue("status");
+
+ String s = cmd.getOptionValue("maxResults");
+ Integer maxResults = s == null ? null : Integer.valueOf(s);
+
+ s = cmd.getOptionValue("maxTime");
+ Integer maxTime = s == null ? null : Integer.valueOf(s);
+
+ KeyDataInfos keys = parent.keyClient.findKeys(clientID, status, maxResults, maxTime);
+
+ Collection<KeyDataInfo> entries = keys.getKeyInfos();
+
+ MainCLI.printMessage(entries.size() + " key(s) matched");
+
+ boolean first = true;
+
+ for (KeyDataInfo info : entries) {
+
+ if (first) {
+ first = false;
+ } else {
+ System.out.println();
+ }
+
+ KeyCLI.printKeyInfo(info);
+ }
+
+ MainCLI.printMessage("Number of entries returned " + entries.size());
+ }
+}
diff --git a/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java b/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java
new file mode 100644
index 000000000..83ce42318
--- /dev/null
+++ b/base/java-tools/src/com/netscape/cmstools/key/KeyRequestFindCLI.java
@@ -0,0 +1,120 @@
+// --- 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.cmstools.key;
+
+import java.util.Collection;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.Option;
+import org.apache.commons.cli.ParseException;
+
+import com.netscape.certsrv.key.KeyRequestInfo;
+import com.netscape.certsrv.key.KeyRequestInfos;
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.cmstools.cli.CLI;
+import com.netscape.cmstools.cli.MainCLI;
+
+/**
+ * @author Endi S. Dewata
+ */
+public class KeyRequestFindCLI extends CLI {
+
+ public KeyCLI parent;
+
+ public KeyRequestFindCLI(KeyCLI parent) {
+ super("request-find", "Find key requests");
+ this.parent = parent;
+ }
+
+ public void printHelp() {
+ formatter.printHelp(parent.name + "-" + name + " [OPTIONS...]", options);
+ }
+
+ public void execute(String[] args) {
+
+ Option option = new Option(null, "status", true, "Request status");
+ option.setArgName("status");
+ options.addOption(option);
+
+ option = new Option(null, "type", true, "Request type");
+ option.setArgName("type");
+ options.addOption(option);
+
+ option = new Option(null, "client", true, "Client ID");
+ option.setArgName("client ID");
+ options.addOption(option);
+
+ option = new Option(null, "maxResults", true, "Maximum results");
+ option.setArgName("max results");
+ options.addOption(option);
+
+ option = new Option(null, "maxTime", true, "Maximum time");
+ option.setArgName("max time");
+ options.addOption(option);
+
+ CommandLine cmd = null;
+
+ try {
+ cmd = parser.parse(options, args);
+
+ } catch (ParseException e) {
+ System.err.println("Error: " + e.getMessage());
+ printHelp();
+ System.exit(1);
+ }
+
+ String status = cmd.getOptionValue("status");
+ String type = cmd.getOptionValue("type");
+ String clientID = cmd.getOptionValue("client");
+
+ String s = cmd.getOptionValue("start");
+ RequestId start = s == null ? null : new RequestId(s);
+
+ s = cmd.getOptionValue("pageSize");
+ Integer pageSize = s == null ? null : Integer.valueOf(s);
+
+ s = cmd.getOptionValue("maxResults");
+ Integer maxResults = s == null ? null : Integer.valueOf(s);
+
+ s = cmd.getOptionValue("maxTime");
+ Integer maxTime = s == null ? null : Integer.valueOf(s);
+
+ KeyRequestInfos keys = parent.keyClient.findKeyRequests(
+ status, type, clientID, start, pageSize, maxResults, maxTime);
+
+ Collection<KeyRequestInfo> entries = keys.getRequests();
+
+ MainCLI.printMessage(entries.size() + " key request(s) matched");
+
+ boolean first = true;
+
+ for (KeyRequestInfo info : entries) {
+
+ if (first) {
+ first = false;
+ } else {
+ System.out.println();
+ }
+
+ KeyCLI.printKeyRequestInfo(info);
+ }
+
+ MainCLI.printMessage("Number of entries returned " + entries.size());
+ }
+}
diff --git a/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java b/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java
index a5b96d1c3..187d4596d 100644
--- a/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java
+++ b/base/java-tools/src/com/netscape/cmstools/user/UserFindCLI.java
@@ -65,7 +65,7 @@ public class UserFindCLI extends CLI {
System.exit(1);
}
- String[] cmdArgs = cmd.getArgs();;
+ String[] cmdArgs = cmd.getArgs();
String filter = cmdArgs.length > 0 ? cmdArgs[0] : null;
String s = cmd.getOptionValue("start");
diff --git a/base/kra/shared/webapps/kra/WEB-INF/web.xml b/base/kra/shared/webapps/kra/WEB-INF/web.xml
index ce90b62e6..ca7d6ea4d 100644
--- a/base/kra/shared/webapps/kra/WEB-INF/web.xml
+++ b/base/kra/shared/webapps/kra/WEB-INF/web.xml
@@ -980,7 +980,6 @@
</user-data-constraint>
</security-constraint>
- <!--
<security-constraint>
<web-resource-collection>
<web-resource-name>Agent Services</web-resource-name>
@@ -993,7 +992,6 @@
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
- -->
<login-config>
<realm-name>Key Recovery Authority</realm-name>