diff options
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(); } } |