summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pki/base/common/src/CMakeLists.txt3
-rw-r--r--pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java122
-rw-r--r--pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java37
-rw-r--r--pki/base/common/src/com/netscape/certsrv/request/RequestId.java89
-rw-r--r--pki/base/common/src/com/netscape/certsrv/request/RequestIdAdapter.java37
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/key/KeyResourceService.java12
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/key/KeysResource.java8
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDAO.java14
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDataInfo.java10
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResource.java10
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java16
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResource.java18
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java21
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/ProcessCertReq.java4
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/ProcessReq.java2
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/QueryReq.java2
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java32
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestInfo.java19
-rw-r--r--pki/base/common/src/com/netscape/cms/servlet/request/model/RecoveryRequestData.java28
-rw-r--r--pki/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java3
-rw-r--r--pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java4
-rw-r--r--pki/base/common/test/com/netscape/cmscore/request/RequestRecordTest.java2
-rw-r--r--pki/base/common/test/com/netscape/cmscore/request/RequestTest.java2
-rw-r--r--pki/base/kra/functional/drmclient.py15
-rw-r--r--pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java13
-rw-r--r--pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java28
-rw-r--r--pki/base/util/src/netscape/security/util/BigInt.java4
27 files changed, 428 insertions, 127 deletions
diff --git a/pki/base/common/src/CMakeLists.txt b/pki/base/common/src/CMakeLists.txt
index 62d30740d..ed83bb68e 100644
--- a/pki/base/common/src/CMakeLists.txt
+++ b/pki/base/common/src/CMakeLists.txt
@@ -200,6 +200,8 @@ set(pki-certsrv_java_SRCS
com/netscape/certsrv/dbs/Modification.java
com/netscape/certsrv/dbs/EDBNotAvailException.java
com/netscape/certsrv/dbs/IDBVirtualList.java
+ com/netscape/certsrv/dbs/keydb/KeyId.java
+ com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java
com/netscape/certsrv/dbs/keydb/KeyState.java
com/netscape/certsrv/dbs/keydb/IKeyRecord.java
com/netscape/certsrv/dbs/keydb/IKeyRecordList.java
@@ -301,6 +303,7 @@ set(pki-certsrv_java_SRCS
com/netscape/certsrv/request/AgentApprovals.java
com/netscape/certsrv/request/IRequestRecord.java
com/netscape/certsrv/request/RequestId.java
+ com/netscape/certsrv/request/RequestIdAdapter.java
com/netscape/certsrv/request/IService.java
com/netscape/certsrv/request/IRequestListener.java
com/netscape/certsrv/request/AgentApproval.java
diff --git a/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java
new file mode 100644
index 000000000..f998bf97a
--- /dev/null
+++ b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyId.java
@@ -0,0 +1,122 @@
+// --- 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.dbs.keydb;
+
+import java.math.BigInteger;
+
+/**
+ * The KeyId class represents the identifier for a particular
+ * key record. This identifier may be used to retrieve the key record
+ * from the database.
+ * <p>
+ *
+ * @author Endi S. Dewata
+ * @version $Revision$ $Date$
+ */
+public class KeyId {
+
+ protected BigInteger value;
+
+ /**
+ * Creates a new KeyId from its string representation.
+ * <p>
+ *
+ * @param id
+ * a string containing the decimal or hex value for the identifier.
+ */
+ public KeyId(String id) {
+ if (id != null) {
+ id = id.trim();
+ if (id.startsWith("0x")) { // hex
+ value = new BigInteger(id.substring(2), 16);
+ } else { // decimal
+ value = new BigInteger(id);
+ }
+ }
+ }
+
+ /**
+ * Creates a new KeyId from its BigInteger representation.
+ * <p>
+ *
+ * @param id
+ * a BigInteger containing the identifier.
+ */
+ public KeyId(BigInteger id) {
+ value = id;
+ }
+
+ /**
+ * Creates a new KeyId from its integer representation.
+ * <p>
+ *
+ * @param id
+ * an integer containing the identifier.
+ */
+ public KeyId(int id) {
+ value = BigInteger.valueOf(id);
+ }
+
+ /**
+ * Converts the KeyId into its BigInteger representation.
+ * <p>
+ *
+ * @return
+ * a BigInteger containing the identifier.
+ */
+ public BigInteger toBigInteger() {
+ return value;
+ }
+
+ /**
+ * Converts the KeyId into its string representation. The string
+ * form can be stored in a database (such as the LDAP directory)
+ * <p>
+ *
+ * @return
+ * a string containing the decimal (base 10) value for the identifier.
+ */
+ public String toString() {
+ return value.toString();
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((value == null) ? 0 : value.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;
+ KeyId other = (KeyId) obj;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
+}
diff --git a/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java
new file mode 100644
index 000000000..3232999fd
--- /dev/null
+++ b/pki/base/common/src/com/netscape/certsrv/dbs/keydb/KeyIdAdapter.java
@@ -0,0 +1,37 @@
+// --- 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.dbs.keydb;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ * The KeyIdAdapter class provides custom marshaling for KeyId.
+ *
+ * @author Endi S. Dewata
+ * @version $Revision$ $Date$
+ */
+public class KeyIdAdapter extends XmlAdapter<String, KeyId> {
+
+ public KeyId unmarshal(String value) throws Exception {
+ return new KeyId(value);
+ }
+
+ public String marshal(KeyId value) throws Exception {
+ return value.toString();
+ }
+}
diff --git a/pki/base/common/src/com/netscape/certsrv/request/RequestId.java b/pki/base/common/src/com/netscape/certsrv/request/RequestId.java
index 31681675b..da61f2bc0 100644
--- a/pki/base/common/src/com/netscape/certsrv/request/RequestId.java
+++ b/pki/base/common/src/com/netscape/certsrv/request/RequestId.java
@@ -17,6 +17,8 @@
// --- END COPYRIGHT BLOCK ---
package com.netscape.certsrv.request;
+import java.math.BigInteger;
+
/**
* The RequestId class represents the identifier for a particular
* request within a request queue. This identifier may be used to
@@ -25,52 +27,95 @@ package com.netscape.certsrv.request;
*
* @version $Revision$ $Date$
*/
-public final class RequestId {
+public class RequestId {
+
+ protected BigInteger value;
/**
* Creates a new RequestId from its string representation.
* <p>
*
* @param id
- * a string containing the decimal (base 10) value for the identifier.
+ * a string containing the decimal or hex value for the identifier.
*/
public RequestId(String id) {
- mString = id;
+ if (id != null) {
+ id = id.trim();
+ if (id.startsWith("0x")) { // hex
+ value = new BigInteger(id.substring(2), 16);
+ } else { // decimal
+ value = new BigInteger(id);
+ }
+ }
}
/**
- * Converts the RequestId into its string representation. The string
- * form can be stored in a database (such as the LDAP directory)
+ * Creates a new RequestId from its BigInteger representation.
* <p>
- *
- * @return
- * a string containing the decimal (base 10) value for the identifier.
+ *
+ * @param id
+ * a BigInteger containing the identifier.
*/
- public String toString() {
- return mString;
+ public RequestId(BigInteger id) {
+ value = id;
}
/**
- * Implements Object.hashCode.
+ * Creates a new RequestId from its integer representation.
* <p>
- *
- * @return hash code of the object
+ *
+ * @param id
+ * an integer containing the identifier.
*/
- public int hashCode() {
- return mString.hashCode();
+ public RequestId(int id) {
+ value = BigInteger.valueOf(id);
}
/**
- * Implements Object.equals.
+ * Converts the RequestId into its BigInteger representation.
+ * <p>
+ *
+ * @return
+ * a BigInteger containing the identifier.
+ */
+ public BigInteger toBigInteger() {
+ return value;
+ }
+
+ /**
+ * Converts the RequestId into its string representation. The string
+ * form can be stored in a database (such as the LDAP directory)
* <p>
*
- * @param obj object to compare
- * @return true if objects are equal
+ * @return
+ * a string containing the decimal (base 10) value for the identifier.
*/
- public boolean equals(Object obj) {
- return mString.equals(obj);
+ public String toString() {
+ return value.toString();
}
- // instance variables
- private final String mString;
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((value == null) ? 0 : value.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;
+ RequestId other = (RequestId) obj;
+ if (value == null) {
+ if (other.value != null)
+ return false;
+ } else if (!value.equals(other.value))
+ return false;
+ return true;
+ }
}
diff --git a/pki/base/common/src/com/netscape/certsrv/request/RequestIdAdapter.java b/pki/base/common/src/com/netscape/certsrv/request/RequestIdAdapter.java
new file mode 100644
index 000000000..1780bc337
--- /dev/null
+++ b/pki/base/common/src/com/netscape/certsrv/request/RequestIdAdapter.java
@@ -0,0 +1,37 @@
+// --- 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.request;
+
+import javax.xml.bind.annotation.adapters.XmlAdapter;
+
+/**
+ * The RequestIdAdapter class provides custom marshaling for RequestId.
+ *
+ * @author Endi S. Dewata
+ * @version $Revision$ $Date$
+ */
+public class RequestIdAdapter extends XmlAdapter<String, RequestId> {
+
+ public RequestId unmarshal(String value) throws Exception {
+ return new RequestId(value);
+ }
+
+ public String marshal(RequestId value) throws Exception {
+ return value.toString();
+ }
+} \ No newline at end of file
diff --git a/pki/base/common/src/com/netscape/cms/servlet/key/KeyResourceService.java b/pki/base/common/src/com/netscape/cms/servlet/key/KeyResourceService.java
index 4888d609f..79e6ccfdb 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/key/KeyResourceService.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/key/KeyResourceService.java
@@ -32,8 +32,11 @@ import com.netscape.cms.servlet.request.model.KeyRequestDAO;
import com.netscape.cms.servlet.request.model.KeyRequestInfo;
import com.netscape.cms.servlet.request.model.RecoveryRequestData;
import com.netscape.certsrv.request.IRequest;
+import com.netscape.certsrv.request.RequestId;
import com.netscape.certsrv.request.RequestStatus;
import com.netscape.certsrv.base.EBaseException;
+import com.netscape.certsrv.dbs.keydb.KeyId;
+
/**
* @author alee
*
@@ -50,7 +53,7 @@ public class KeyResourceService extends CMSResourceService implements KeyResourc
*/
public KeyData retrieveKey(RecoveryRequestData data) {
// auth and authz
- String keyId = validateRequest(data);
+ KeyId keyId = validateRequest(data);
KeyDAO dao = new KeyDAO();
KeyData keyData;
try {
@@ -73,10 +76,10 @@ public class KeyResourceService extends CMSResourceService implements KeyResourc
return retrieveKey(data);
}
- private String validateRequest(RecoveryRequestData data) {
+ private KeyId validateRequest(RecoveryRequestData data) {
// confirm request exists
- String reqId = data.getRequestId();
+ RequestId reqId = data.getRequestId();
if (reqId == null) {
// log error
throw new WebApplicationException(Response.Status.BAD_REQUEST);
@@ -120,8 +123,7 @@ public class KeyResourceService extends CMSResourceService implements KeyResourc
throw new WebApplicationException(Response.Status.UNAUTHORIZED);
}
- String keyURL = reqInfo.getKeyURL();
- return keyURL.substring(keyURL.lastIndexOf("/") + 1);
+ return reqInfo.getKeyId();
}
}
diff --git a/pki/base/common/src/com/netscape/cms/servlet/key/KeysResource.java b/pki/base/common/src/com/netscape/cms/servlet/key/KeysResource.java
index 35cd5ccbe..c93ffa4c9 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/key/KeysResource.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/key/KeysResource.java
@@ -10,14 +10,14 @@ import com.netscape.cms.servlet.key.model.KeyDataInfos;
@Path("/keys")
public interface KeysResource {
- public static final String DEFAULT_MAXTIME = "10";
- public static final String DEFAULT_MAXRESULTS = "100";
+ public static final int DEFAULT_MAXTIME = 10;
+ public static final int DEFAULT_MAXRESULTS = 100;
@GET
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
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);
+ @DefaultValue(""+DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults,
+ @DefaultValue(""+DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime);
}
diff --git a/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDAO.java b/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDAO.java
index f2ee46c66..f479c6f0d 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDAO.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDAO.java
@@ -30,6 +30,7 @@ import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.base.EBaseException;
import com.netscape.certsrv.dbs.keydb.IKeyRecord;
import com.netscape.certsrv.dbs.keydb.IKeyRepository;
+import com.netscape.certsrv.dbs.keydb.KeyId;
import com.netscape.certsrv.kra.IKeyRecoveryAuthority;
import com.netscape.certsrv.request.IRequest;
import com.netscape.certsrv.request.IRequestQueue;
@@ -87,23 +88,22 @@ public class KeyDAO {
return ret;
}
- public KeyData getKey(String keyId, RecoveryRequestData data) throws EBaseException {
+ public KeyData getKey(KeyId keyId, RecoveryRequestData data) throws EBaseException {
KeyData keyData;
- BigInteger serial = new BigInteger(keyId);
-
- String rId = data.getRequestId();
+
+ RequestId rId = data.getRequestId();
String transWrappedSessionKey;
String sessionWrappedPassphrase;
- IRequest request = queue.findRequest(new RequestId(rId));
+ IRequest request = queue.findRequest(rId);
if (request == null) {
return null;
}
// get wrapped key
- IKeyRecord rec = repo.readKeyRecord(serial);
+ IKeyRecord rec = repo.readKeyRecord(keyId.toBigInteger());
if (rec == null) {
return null;
}
@@ -133,7 +133,7 @@ public class KeyDAO {
sessionWrappedPassphrase = data.getSessionWrappedPassphrase();
nonceData = data.getNonceData();
- if(transWrappedSessionKey == null) {
+ if (transWrappedSessionKey == null) {
//There must be at least a transWrappedSessionKey input provided.
//The command AND the request have provided insufficient data, end of the line.
throw new EBaseException("Can't retrieve key, insufficient input data!");
diff --git a/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDataInfo.java b/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDataInfo.java
index 46843ba90..88b31b4d1 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDataInfo.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/key/model/KeyDataInfo.java
@@ -26,6 +26,8 @@ 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
*
@@ -59,6 +61,14 @@ public class KeyDataInfo {
}
/**
+ * @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() {
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResource.java b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResource.java
index 656768f02..cd08f46bb 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResource.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResource.java
@@ -8,6 +8,8 @@ import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
+
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.request.model.ArchivalRequestData;
import com.netscape.cms.servlet.request.model.KeyRequestInfo;
import com.netscape.cms.servlet.request.model.RecoveryRequestData;
@@ -24,7 +26,7 @@ public interface KeyRequestResource {
@GET
@Path("{id}")
@Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON, MediaType.TEXT_XML })
- public KeyRequestInfo getRequestInfo(@PathParam("id") String id);
+ public KeyRequestInfo getRequestInfo(@PathParam("id") RequestId id);
// Archiving - used to test integration with a browser
@POST
@@ -54,14 +56,14 @@ public interface KeyRequestResource {
@POST
@Path("approve/{id}")
- public void approveRequest(@PathParam("id") String id);
+ public void approveRequest(@PathParam("id") RequestId id);
@POST
@Path("reject/{id}")
- public void rejectRequest(@PathParam("id") String id);
+ public void rejectRequest(@PathParam("id") RequestId id);
@POST
@Path("cancel/{id}")
- public void cancelRequest(@PathParam("id") String id);
+ public void cancelRequest(@PathParam("id") RequestId id);
}
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java
index e18407727..43e58bbdc 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestResourceService.java
@@ -18,13 +18,13 @@
package com.netscape.cms.servlet.request;
-import javax.ws.rs.PathParam;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import com.netscape.certsrv.base.EBaseException;
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.base.CMSResourceService;
import com.netscape.cms.servlet.request.model.ArchivalRequestData;
import com.netscape.cms.servlet.request.model.KeyRequestDAO;
@@ -43,7 +43,7 @@ public class KeyRequestResourceService extends CMSResourceService implements Key
/**
* Used to retrieve key request info for a specific request
*/
- public KeyRequestInfo getRequestInfo(String id) {
+ public KeyRequestInfo getRequestInfo(RequestId id) {
// auth and authz
KeyRequestDAO dao = new KeyRequestDAO();
KeyRequestInfo info;
@@ -118,8 +118,8 @@ public class KeyRequestResourceService extends CMSResourceService implements Key
return info;
}
- public void approveRequest(@PathParam("id") String id) {
- if ( id == null) {
+ public void approveRequest(RequestId id) {
+ if (id == null) {
throw new WebApplicationException(Response.Status.BAD_REQUEST);
}
// auth and authz
@@ -133,8 +133,8 @@ public class KeyRequestResourceService extends CMSResourceService implements Key
}
}
- public void rejectRequest(@PathParam("id") String id) {
- if ( id == null) {
+ public void rejectRequest(RequestId id) {
+ if (id == null) {
throw new WebApplicationException(Response.Status.BAD_REQUEST);
}
// auth and authz
@@ -148,8 +148,8 @@ public class KeyRequestResourceService extends CMSResourceService implements Key
}
}
- public void cancelRequest(@PathParam("id") String id) {
- if ( id == null) {
+ public void cancelRequest(RequestId id) {
+ if (id == null) {
throw new WebApplicationException(Response.Status.BAD_REQUEST);
}
// auth and authz
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResource.java b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResource.java
index 0f8fbc78f..fd6bc4c27 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResource.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResource.java
@@ -6,15 +6,17 @@ import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
+
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.request.model.KeyRequestInfos;
@Path("/keyrequests")
public interface KeyRequestsResource {
- public static final String DEFAULT_START = "0";
- public static final String DEFAULT_PAGESIZE = "20";
- public static final String DEFAULT_MAXRESULTS = "100";
- public static final String DEFAULT_MAXTIME = "10";
+ 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
@@ -24,9 +26,9 @@ public interface KeyRequestsResource {
public KeyRequestInfos listRequests(@QueryParam("requestState") String requestState,
@QueryParam("requestType") String requestType,
@QueryParam("clientID") String clientID,
- @DefaultValue(DEFAULT_START) @QueryParam("start") String start_s,
- @DefaultValue(DEFAULT_PAGESIZE) @QueryParam("pageSize") int pageSize,
- @DefaultValue(DEFAULT_MAXRESULTS) @QueryParam("maxResults") int maxResults,
- @DefaultValue(DEFAULT_MAXTIME) @QueryParam("maxTime") int maxTime);
+ @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);
}
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java
index 290868ab5..9b11a96d6 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/KeyRequestsResourceService.java
@@ -25,10 +25,11 @@ import javax.ws.rs.core.UriInfo;
import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.base.EBaseException;
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.base.CMSResourceService;
import com.netscape.cms.servlet.request.model.KeyRequestDAO;
import com.netscape.cms.servlet.request.model.KeyRequestInfos;
-
+
/**
* @author alee
*
@@ -42,28 +43,16 @@ public class KeyRequestsResourceService extends CMSResourceService implements Ke
* Used to generate list of key requests based on the search parameters
*/
public KeyRequestInfos listRequests(String requestState, String requestType, String clientID,
- String start_s, int pageSize, int maxResults,
- int maxTime) {
+ RequestId start, int pageSize, int maxResults, int maxTime) {
// auth and authz
// get ldap filter
String filter = createSearchFilter(requestState, requestType, clientID);
CMS.debug("listRequests: filter is " + filter);
-
// get start marker
- int start = Integer.parseInt(KeyRequestsResource.DEFAULT_START);
- if (start_s != null) {
- try {
- if (start_s.trim().startsWith("0x")) {
- start = Integer.parseInt(start_s.trim().substring(2), 16);
- } else {
- start = Integer.parseInt(start_s.trim());
- }
- } catch (NumberFormatException e) {
- CMS.debug("listRequests: NumberformatException: Invalid value for start " + start_s);
- throw new WebApplicationException(Response.Status.NOT_FOUND);
- }
+ if (start == null) {
+ start = new RequestId(KeyRequestsResource.DEFAULT_START);
}
KeyRequestDAO reqDAO = new KeyRequestDAO();
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/ProcessCertReq.java b/pki/base/common/src/com/netscape/cms/servlet/request/ProcessCertReq.java
index 68328a73c..ee5581a6d 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/ProcessCertReq.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/ProcessCertReq.java
@@ -314,7 +314,7 @@ public class ProcessCertReq extends CMSServlet {
IRequest r = null;
if (seqNum.compareTo(BigInteger.ONE.negate()) > 0) {
- r = mQueue.findRequest(new RequestId(seqNum.toString()));
+ r = mQueue.findRequest(new RequestId(seqNum));
}
if (seqNum.compareTo(BigInteger.ONE.negate()) > 0 && r != null) {
@@ -424,7 +424,7 @@ public class ProcessCertReq extends CMSServlet {
}
try {
- IRequest r = mQueue.findRequest(new RequestId(seqNum.toString()));
+ IRequest r = mQueue.findRequest(new RequestId(seqNum));
if (r != null) {
// overwrite "auditRequesterID" if and only if "id" != null
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/ProcessReq.java b/pki/base/common/src/com/netscape/cms/servlet/request/ProcessReq.java
index 93457a281..a4eb68b19 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/ProcessReq.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/ProcessReq.java
@@ -245,7 +245,7 @@ public class ProcessReq extends CMSServlet {
header.addBigIntegerValue("seqNum", seqNum, 10);
- IRequest r = mQueue.findRequest(new RequestId(seqNum.toString()));
+ IRequest r = mQueue.findRequest(new RequestId(seqNum));
if (r != null) {
if (doAssign != null) {
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/QueryReq.java b/pki/base/common/src/com/netscape/cms/servlet/request/QueryReq.java
index e580cc9a4..181f9f906 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/QueryReq.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/QueryReq.java
@@ -414,7 +414,7 @@ public class QueryReq extends CMSServlet {
jumptoend = true; // override to '99' during search
}
- RequestId id = new RequestId(marker.toString());
+ RequestId id = new RequestId(marker);
IRequestVirtualList list = mQueue.getPagedRequestsByFilter(
id,
jumptoend,
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java b/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java
index 4da4af6d5..d1f1a27bd 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestDAO.java
@@ -29,6 +29,7 @@ import javax.ws.rs.core.UriInfo;
import com.netscape.certsrv.apps.CMS;
import com.netscape.certsrv.base.EBaseException;
+import com.netscape.certsrv.dbs.keydb.KeyId;
import com.netscape.certsrv.kra.IKeyRecoveryAuthority;
import com.netscape.certsrv.request.IRequest;
import com.netscape.certsrv.request.IRequestList;
@@ -89,7 +90,7 @@ public class KeyRequestDAO {
* @return collection of key request info
* @throws EBaseException
*/
- public KeyRequestInfos listRequests(String filter, int start, int pageSize, int maxResults, int maxTime,
+ public KeyRequestInfos listRequests(String filter, RequestId start, int pageSize, int maxResults, int maxTime,
UriInfo uriInfo) throws EBaseException {
List <KeyRequestInfo> list = new ArrayList<KeyRequestInfo>();
List <Link> links = new ArrayList<Link>();
@@ -97,8 +98,7 @@ public class KeyRequestDAO {
int current = 0;
if (isVLVSearch(filter)) {
- RequestId id = new RequestId(Integer.toString(start));
- IRequestVirtualList vlvlist = queue.getPagedRequestsByFilter(id, false, filter,
+ IRequestVirtualList vlvlist = queue.getPagedRequestsByFilter(start, false, filter,
pageSize +1 , "requestId");
totalSize = vlvlist.getSize();
current = vlvlist.getCurrentIndex();
@@ -120,7 +120,7 @@ public class KeyRequestDAO {
return null;
}
while (requests.hasMoreElements()) {
- RequestId rid = (RequestId) requests.nextElement();
+ RequestId rid = requests.nextElement();
IRequest request = queue.findRequest(rid);
if (request != null) {
list.add(createKeyRequestInfo(request, uriInfo));
@@ -168,8 +168,8 @@ public class KeyRequestDAO {
* @return info for specific request
* @throws EBaseException
*/
- public KeyRequestInfo getRequest(String id, UriInfo uriInfo) throws EBaseException {
- IRequest request = queue.findRequest(new RequestId(id));
+ public KeyRequestInfo getRequest(RequestId id, UriInfo uriInfo) throws EBaseException {
+ IRequest request = queue.findRequest(id);
if (request == null) {
return null;
}
@@ -189,7 +189,7 @@ public class KeyRequestDAO {
boolean keyExists = doesKeyExist(clientId, "active", uriInfo);
- if(keyExists == true) {
+ if (keyExists == true) {
throw new EBaseException("Can not archive already active existing key!");
}
@@ -221,7 +221,7 @@ public class KeyRequestDAO {
IRequest request = queue.newRequest(IRequest.SECURITY_DATA_RECOVERY_REQUEST);
- String keyId = data.getKeyId();
+ KeyId keyId = data.getKeyId();
Hashtable<String, Object> requestParams;
requestParams = kra.createVolatileRequest(request.getRequestId());
@@ -244,27 +244,27 @@ public class KeyRequestDAO {
requestParams.put(IRequest.SECURITY_DATA_IV_STRING_IN, nonceDataStr);
}
- request.setExtData(ATTR_SERIALNO,keyId);
+ request.setExtData(ATTR_SERIALNO, keyId.toString());
queue.processRequest(request);
return createKeyRequestInfo(request, uriInfo);
}
- public void approveRequest(String id) throws EBaseException {
- IRequest request = queue.findRequest(new RequestId(id));
+ public void approveRequest(RequestId id) throws EBaseException {
+ IRequest request = queue.findRequest(id);
request.setRequestStatus(RequestStatus.APPROVED);
queue.updateRequest(request);
}
- public void rejectRequest(String id) throws EBaseException {
- IRequest request = queue.findRequest(new RequestId(id));
+ public void rejectRequest(RequestId id) throws EBaseException {
+ IRequest request = queue.findRequest(id);
request.setRequestStatus(RequestStatus.CANCELED);
queue.updateRequest(request);
}
- public void cancelRequest(String id) throws EBaseException {
- IRequest request = queue.findRequest(new RequestId(id));
+ public void cancelRequest(RequestId id) throws EBaseException {
+ IRequest request = queue.findRequest(id);
request.setRequestStatus(RequestStatus.REJECTED);
queue.updateRequest(request);
}
@@ -276,7 +276,7 @@ public class KeyRequestDAO {
ret.setRequestStatus(request.getRequestStatus().toString());
Path keyRequestPath = KeyRequestResource.class.getAnnotation(Path.class);
- String rid = request.getRequestId().toString();
+ RequestId rid = request.getRequestId();
UriBuilder reqBuilder = uriInfo.getBaseUriBuilder();
reqBuilder.path(keyRequestPath.value() + "/" + rid);
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestInfo.java b/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestInfo.java
index d768e2ba9..f07c302dd 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestInfo.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/model/KeyRequestInfo.java
@@ -23,6 +23,9 @@ import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.request.RequestId;
+
@XmlRootElement(name="SecurityDataRequestInfo")
@XmlAccessorType(XmlAccessType.FIELD)
public class KeyRequestInfo {
@@ -79,6 +82,14 @@ public class KeyRequestInfo {
}
/**
+ * @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) {
@@ -93,6 +104,14 @@ public class KeyRequestInfo {
}
/**
+ * @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) {
diff --git a/pki/base/common/src/com/netscape/cms/servlet/request/model/RecoveryRequestData.java b/pki/base/common/src/com/netscape/cms/servlet/request/model/RecoveryRequestData.java
index ae8417542..80ec6d127 100644
--- a/pki/base/common/src/com/netscape/cms/servlet/request/model/RecoveryRequestData.java
+++ b/pki/base/common/src/com/netscape/cms/servlet/request/model/RecoveryRequestData.java
@@ -26,6 +26,12 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
+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
@@ -42,10 +48,12 @@ public class RecoveryRequestData {
private static final String NONCE_DATA = "nonceData";
@XmlElement
- protected String keyId;
+ @XmlJavaTypeAdapter(KeyIdAdapter.class)
+ protected KeyId keyId;
@XmlElement
- protected String requestId;
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ protected RequestId requestId;
@XmlElement
protected String transWrappedSessionKey;
@@ -61,8 +69,12 @@ public class RecoveryRequestData {
}
public RecoveryRequestData(MultivaluedMap<String, String> form) {
- keyId = form.getFirst(KEY_ID);
- requestId = form.getFirst(REQUEST_ID);
+ 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);
@@ -71,28 +83,28 @@ public class RecoveryRequestData {
/**
* @return the keyId
*/
- public String getKeyId() {
+ public KeyId getKeyId() {
return keyId;
}
/**
* @param keyId the keyId to set
*/
- public void setKeyId(String keyId) {
+ public void setKeyId(KeyId keyId) {
this.keyId = keyId;
}
/**
* @return the requestId
*/
- public String getRequestId() {
+ public RequestId getRequestId() {
return requestId;
}
/**
* @param requestId the requestId to set
*/
- public void setRequestId(String requestId) {
+ public void setRequestId(RequestId requestId) {
this.requestId = requestId;
}
diff --git a/pki/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java b/pki/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java
index fb97a5ccb..669200575 100644
--- a/pki/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java
+++ b/pki/base/common/src/com/netscape/cmscore/cert/PrettyPrintFormat.java
@@ -104,6 +104,9 @@ public class PrettyPrintFormat implements IPrettyPrintFormat {
public String toHexString(byte[] in, int indentSize,
int lineLen, String separator) {
+
+ if (in == null) return "";
+
StringBuffer sb = new StringBuffer();
int hexCount = 0;
char c[];
diff --git a/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java b/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java
index b23e6fff4..ef13d3c29 100644
--- a/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java
+++ b/pki/base/common/src/com/netscape/cmscore/request/RequestQueue.java
@@ -52,7 +52,7 @@ public class RequestQueue
// get the next request Id
BigInteger next = mRepository.getNextSerialNumber();
- RequestId rid = new RequestId(next.toString());
+ RequestId rid = new RequestId(next);
return rid;
}
@@ -241,7 +241,7 @@ public class RequestQueue
String filter = "(" + "requeststate" + "=*" + ")";
- RequestId fromId = new RequestId(reqId_upper_bound.toString(10));
+ RequestId fromId = new RequestId(reqId_upper_bound);
CMS.debug("RequestQueue: getLastRequestId: filter " + filter + " fromId " + fromId);
ListEnumeration recList = (ListEnumeration) getPagedRequestsByFilter(fromId, filter, 5 * -1, "requestId");
diff --git a/pki/base/common/test/com/netscape/cmscore/request/RequestRecordTest.java b/pki/base/common/test/com/netscape/cmscore/request/RequestRecordTest.java
index 06a472571..0ebf3beab 100644
--- a/pki/base/common/test/com/netscape/cmscore/request/RequestRecordTest.java
+++ b/pki/base/common/test/com/netscape/cmscore/request/RequestRecordTest.java
@@ -29,7 +29,7 @@ public class RequestRecordTest extends CMSBaseTestCase {
public void cmsTestSetUp() {
requestRecord = new RequestRecord();
- request = new Request(new RequestId("testid"));
+ request = new Request(new RequestId("0xabcdef"));
}
public void cmsTestTearDown() {
diff --git a/pki/base/common/test/com/netscape/cmscore/request/RequestTest.java b/pki/base/common/test/com/netscape/cmscore/request/RequestTest.java
index 3ca589280..b396c2d35 100644
--- a/pki/base/common/test/com/netscape/cmscore/request/RequestTest.java
+++ b/pki/base/common/test/com/netscape/cmscore/request/RequestTest.java
@@ -42,7 +42,7 @@ public class RequestTest extends CMSBaseTestCase {
cmsStub = new CMSMemoryStub();
CMS.setCMSEngine(cmsStub);
- request = new Request(new RequestId("testid"));
+ request = new Request(new RequestId("0xabcdef"));
}
public void cmsTestTearDown() {
diff --git a/pki/base/kra/functional/drmclient.py b/pki/base/kra/functional/drmclient.py
index 95ce04207..e9b0ccb49 100644
--- a/pki/base/kra/functional/drmclient.py
+++ b/pki/base/kra/functional/drmclient.py
@@ -45,6 +45,9 @@ import base64
CERT_HEADER = "-----BEGIN NEW CERTIFICATE REQUEST-----"
CERT_FOOTER = "-----END NEW CERTIFICATE REQUEST-----"
+def _(string):
+ return string
+
def parse_key_request_info_xml(doc):
'''
:param doc: The root node of the xml document to parse
@@ -976,6 +979,7 @@ print response
#create recovery request
key_id = response.keys()[0]
+print key_id
response = test_kra.submit_recovery_request(key_id)
print response
@@ -983,6 +987,17 @@ print response
request_id = response['request_id']
test_kra.approve_recovery_request(request_id)
+# test invalid request
+print "Testing invalid request ID"
+try:
+ response = test_kra.retrieve_security_data("INVALID")
+ print "Failure: No exception thrown"
+except CertificateOperationError, e:
+ if 'Error in retrieving security data (Bad Request)' == e.error:
+ print "Success: " + e.error
+ else:
+ print "Failure: Wrong error message: " + e.error
+
# retrieve key
response = test_kra.retrieve_security_data(request_id)
print response
diff --git a/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java b/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java
index eaf6b98dd..51cead47b 100644
--- a/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java
+++ b/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMRestClient.java
@@ -5,6 +5,9 @@ import java.util.Iterator;
import org.jboss.resteasy.client.ClientResponse;
import org.jboss.resteasy.client.ProxyFactory;
+
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.admin.SystemCertificateResource;
import com.netscape.cms.servlet.cert.model.CertificateData;
import com.netscape.cms.servlet.key.KeyResource;
@@ -45,7 +48,9 @@ public class DRMRestClient {
}
public Collection<KeyRequestInfo> listRequests(String requestState, String requestType) {
- KeyRequestInfos infos = keyRequestsClient.listRequests(requestState, requestType, null, "0", 100, 100, 10);
+ KeyRequestInfos infos = keyRequestsClient.listRequests(
+ requestState, requestType, null, new RequestId(0), 100, 100, 10
+ );
Collection<KeyRequestInfo> list = infos.getRequests();
return list;
}
@@ -77,7 +82,7 @@ public class DRMRestClient {
return null;
}
- public KeyRequestInfo requestRecovery(String keyId, byte[] rpwd, byte[] rkey, byte[] nonceData) {
+ public KeyRequestInfo requestRecovery(KeyId keyId, byte[] rpwd, byte[] rkey, byte[] nonceData) {
// create recovery request
RecoveryRequestData data = new RecoveryRequestData();
data.setKeyId(keyId);
@@ -96,11 +101,11 @@ public class DRMRestClient {
return info;
}
- public void approveRecovery(String recoveryId) {
+ public void approveRecovery(RequestId recoveryId) {
keyRequestClient.approveRequest(recoveryId);
}
- public KeyData retrieveKey(String keyId, String requestId, byte[] rpwd, byte[] rkey, byte[] nonceData) {
+ public KeyData retrieveKey(KeyId keyId, RequestId requestId, byte[] rpwd, byte[] rkey, byte[] nonceData) {
// create recovery request
RecoveryRequestData data = new RecoveryRequestData();
data.setKeyId(keyId);
diff --git a/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java b/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java
index 368cb7282..8020ec2ca 100644
--- a/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java
+++ b/pki/base/kra/functional/src/com/netscape/cms/servlet/test/DRMTest.java
@@ -38,6 +38,8 @@ import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
+import com.netscape.certsrv.dbs.keydb.KeyId;
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cms.servlet.base.CMSResourceService;
import com.netscape.cms.servlet.key.model.KeyData;
import com.netscape.cms.servlet.key.model.KeyDataInfo;
@@ -134,9 +136,9 @@ public class DRMTest {
String recoveredKey = null;
// various ids used in recovery/archival operations
- String keyId = null;
+ KeyId keyId = null;
String clientId = null;
- String recoveryRequestId = null;
+ RequestId recoveryRequestId = null;
// Variables for data structures from calls
KeyRequestInfo requestInfo = null;
@@ -218,7 +220,7 @@ public class DRMTest {
KeyRequestInfo info = client.archiveSecurityData(encoded, clientId, KeyRequestResource.SYMMETRIC_KEY_TYPE);
log("Archival Results:");
printRequestInfo(info);
- keyId = getId(info.getKeyURL());
+ keyId = info.getKeyId();
} catch (Exception e) {
log("Exception in archiving symmetric key:" + e.getMessage());
e.printStackTrace();
@@ -228,7 +230,7 @@ public class DRMTest {
log("Getting key ID for symmetric key");
keyInfo = client.getKeyData(clientId, "active");
- String keyId2 = getId(keyInfo.getKeyURL());
+ KeyId keyId2 = keyInfo.getKeyId();
if (keyId2 == null) {
log("No archived key found");
} else {
@@ -247,7 +249,7 @@ public class DRMTest {
recoveryKey = CryptoUtil.generateKey(token, KeyGenAlgorithm.DES3);
wrappedRecoveryKey = CryptoUtil.wrapSymmetricKey(manager, token, transportCert, recoveryKey);
KeyRequestInfo info = client.requestRecovery(keyId, null, wrappedRecoveryKey, ivps.getIV());
- recoveryRequestId = getId(info.getRequestURL());
+ recoveryRequestId = info.getRequestId();
} catch (Exception e) {
log("Exception in recovering symmetric key using session key: " + e.getMessage());
}
@@ -289,7 +291,7 @@ public class DRMTest {
wrappedRecoveryKey = CryptoUtil.wrapSymmetricKey(manager, token, transportCert, recoveryKey);
requestInfo = client.requestRecovery(keyId, wrappedRecoveryPassphrase, wrappedRecoveryKey, ivps.getIV());
- recoveryRequestId = getId(requestInfo.getRequestURL());
+ recoveryRequestId = requestInfo.getRequestId();
} catch (Exception e) {
log("Exception in recovering symmetric key using passphrase" + e.toString());
e.printStackTrace();
@@ -327,7 +329,7 @@ public class DRMTest {
requestInfo = client.archiveSecurityData(encoded, clientId, KeyRequestResource.PASS_PHRASE_TYPE);
log("Archival Results:");
printRequestInfo(requestInfo);
- keyId = getId(requestInfo.getKeyURL());
+ keyId = requestInfo.getKeyId();
} catch (Exception e) {
log("Exception in archiving symmetric key:" + e.toString());
e.printStackTrace();
@@ -336,7 +338,7 @@ public class DRMTest {
//Test 13: Get keyId for active passphrase with client ID
log("Getting key ID for passphrase");
keyInfo = client.getKeyData(clientId, "active");
- keyId2 = getId(keyInfo.getKeyURL());
+ keyId2 = keyInfo.getKeyId();
if (keyId2 == null) {
log("No archived key found");
} else {
@@ -360,7 +362,7 @@ public class DRMTest {
wrappedRecoveryPassphrase = CryptoUtil.wrapPassphrase(token, recoveryPassphrase, ivps, recoveryKey,
EncryptionAlgorithm.DES3_CBC_PAD);
requestInfo = client.requestRecovery(keyId, null, wrappedRecoveryKey, ivps.getIV());
- recoveryRequestId = getId(requestInfo.getRequestURL());
+ recoveryRequestId = requestInfo.getRequestId();
} catch (Exception e) {
log("Exception in recovering passphrase using session key: " + e.getMessage());
}
@@ -394,7 +396,7 @@ public class DRMTest {
// Test 17: Submit a recovery request for the passphrase using a passphrase
log("Submitting a recovery request for the passphrase using a passphrase");
requestInfo = client.requestRecovery(keyId, wrappedRecoveryPassphrase, wrappedRecoveryKey, ivps.getIV());
- recoveryRequestId = getId(requestInfo.getRequestURL());
+ recoveryRequestId = requestInfo.getRequestId();
//Test 18: Approve recovery
log("Approving recovery request: " + recoveryRequestId);
@@ -423,7 +425,7 @@ public class DRMTest {
log("Submitting a recovery request for the passphrase using a passphrase, wait till end to provide recovery data.");
requestInfo = client.requestRecovery(keyId, null, null, null);
- recoveryRequestId = getId(requestInfo.getRequestURL());
+ recoveryRequestId = requestInfo.getRequestId();
//Test 21: Approve recovery
log("Approving recovery request: " + recoveryRequestId);
@@ -453,10 +455,6 @@ public class DRMTest {
System.out.println(string);
}
- private static String getId(String link) {
- return link.substring(link.lastIndexOf("/") + 1);
- }
-
private static void printRequestInfo(KeyRequestInfo info) {
log("KeyRequestURL: " + info.getRequestURL());
log("Key URL: " + info.getKeyURL());
diff --git a/pki/base/util/src/netscape/security/util/BigInt.java b/pki/base/util/src/netscape/security/util/BigInt.java
index 8f7b0b872..9210648f1 100644
--- a/pki/base/util/src/netscape/security/util/BigInt.java
+++ b/pki/base/util/src/netscape/security/util/BigInt.java
@@ -47,7 +47,7 @@ public final class BigInt {
* first. CONSUMED.
*/
public BigInt(byte[] data) {
- places = (byte[]) data.clone();
+ places = data.clone();
}
/**
@@ -154,7 +154,7 @@ public final class BigInt {
zero[0] = (byte) 0;
return zero;
} else {
- return (byte[]) places.clone();
+ return places.clone();
}
}