From 552953c15e8456b0d5e5a33a65da5553d14e6853 Mon Sep 17 00:00:00 2001 From: Ade Lee Date: Wed, 5 Feb 2014 13:03:46 -0500 Subject: Change the return type for KeyRequest creation operations We will likely want to extend the REST API to allow the immediate return of a generated key, and perhaps of a recovered key in a single step. This change allows us to do that. --- .../netscape/cms/servlet/key/KeyRequestDAO.java | 31 ++++++++++++---- .../cms/servlet/request/KeyRequestService.java | 41 ++++++++++++---------- 2 files changed, 47 insertions(+), 25 deletions(-) (limited to 'base/server/cms/src/com/netscape/cms') diff --git a/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java b/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java index ac728d593..7a63b113d 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java +++ b/base/server/cms/src/com/netscape/cms/servlet/key/KeyRequestDAO.java @@ -36,10 +36,12 @@ 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.key.KeyArchivalRequest; +import com.netscape.certsrv.key.KeyData; import com.netscape.certsrv.key.KeyRecoveryRequest; import com.netscape.certsrv.key.KeyRequestInfo; import com.netscape.certsrv.key.KeyRequestInfoCollection; import com.netscape.certsrv.key.KeyRequestResource; +import com.netscape.certsrv.key.KeyRequestResponse; import com.netscape.certsrv.key.KeyResource; import com.netscape.certsrv.key.SymKeyGenerationRequest; import com.netscape.certsrv.kra.IKeyRecoveryAuthority; @@ -133,7 +135,7 @@ public class KeyRequestDAO extends CMSRequestDAO { * @return info for the request submitted. * @throws EBaseException */ - public KeyRequestInfo submitRequest(KeyArchivalRequest data, UriInfo uriInfo) throws EBaseException { + public KeyRequestResponse submitRequest(KeyArchivalRequest data, UriInfo uriInfo) throws EBaseException { String clientId = data.getClientId(); String wrappedSecurityData = data.getWrappedPrivateData(); String dataType = data.getDataType(); @@ -162,7 +164,7 @@ public class KeyRequestDAO extends CMSRequestDAO { queue.markAsServiced(request); - return createKeyRequestInfo(request, uriInfo); + return createKeyRequestResponse(request, uriInfo); } /** @@ -172,7 +174,7 @@ public class KeyRequestDAO extends CMSRequestDAO { * @return info on the recovery request created * @throws EBaseException */ - public KeyRequestInfo submitRequest(KeyRecoveryRequest data, UriInfo uriInfo) throws EBaseException { + public KeyRequestResponse submitRequest(KeyRecoveryRequest data, UriInfo uriInfo) throws EBaseException { // set data using request.setExtData(field, data) String wrappedSessionKeyStr = data.getTransWrappedSessionKey(); @@ -209,10 +211,10 @@ public class KeyRequestDAO extends CMSRequestDAO { queue.processRequest(request); - return createKeyRequestInfo(request, uriInfo); + return createKeyRequestResponse(request, uriInfo); } - public KeyRequestInfo submitRequest(SymKeyGenerationRequest data, UriInfo uriInfo) throws EBaseException { + public KeyRequestResponse submitRequest(SymKeyGenerationRequest data, UriInfo uriInfo) throws EBaseException { String clientId = data.getClientId(); String algName = data.getKeyAlgorithm(); int size = data.getKeySize(); @@ -258,7 +260,7 @@ public class KeyRequestDAO extends CMSRequestDAO { queue.processRequest(request); queue.markAsServiced(request); - return createKeyRequestInfo(request, uriInfo); + return createKeyRequestResponse(request, uriInfo); } public void approveRequest(RequestId id) throws EBaseException { @@ -302,11 +304,28 @@ public class KeyRequestDAO extends CMSRequestDAO { return ret; } + private KeyData createKeyData(IRequest request, UriInfo uriInfo) { + // TODO - to be implemented when we enable one-shot generation and recovery + // with retrieval + return null; + } + + private KeyRequestResponse createKeyRequestResponse(IRequest request, UriInfo uriInfo) { + KeyRequestResponse response = new KeyRequestResponse(); + response.setRequestInfo(createKeyRequestInfo(request, uriInfo)); + response.setKeyData(createKeyData(request, uriInfo)); + return response; + } + @Override public KeyRequestInfo createCMSRequestInfo(IRequest request, UriInfo uriInfo) { return createKeyRequestInfo(request, uriInfo); } + public KeyRequestResponse createCMSRequestResponse(IRequest request, UriInfo uriInfo) { + return createKeyRequestResponse(request, uriInfo); + } + //We only care if the key exists or not private boolean doesKeyExist(String clientId, String keyStatus, UriInfo uriInfo) { String state = "active"; diff --git a/base/server/cms/src/com/netscape/cms/servlet/request/KeyRequestService.java b/base/server/cms/src/com/netscape/cms/servlet/request/KeyRequestService.java index 19f053d0e..c919f10ea 100644 --- a/base/server/cms/src/com/netscape/cms/servlet/request/KeyRequestService.java +++ b/base/server/cms/src/com/netscape/cms/servlet/request/KeyRequestService.java @@ -51,6 +51,7 @@ import com.netscape.certsrv.key.KeyRecoveryRequest; import com.netscape.certsrv.key.KeyRequestInfo; import com.netscape.certsrv.key.KeyRequestInfoCollection; import com.netscape.certsrv.key.KeyRequestResource; +import com.netscape.certsrv.key.KeyRequestResponse; import com.netscape.certsrv.key.SymKeyGenerationRequest; import com.netscape.certsrv.kra.IKeyRecoveryAuthority; import com.netscape.certsrv.kra.IKeyService; @@ -176,14 +177,14 @@ public class KeyRequestService extends PKIService implements KeyRequestResource } KeyRequestDAO dao = new KeyRequestDAO(); - KeyRequestInfo info; + KeyRequestResponse response; try { - info = dao.submitRequest(data, uriInfo); - auditArchivalRequestMade(info.getRequestId(), ILogger.SUCCESS, data.getClientId()); + response = dao.submitRequest(data, uriInfo); + auditArchivalRequestMade(response.getRequestInfo().getRequestId(), ILogger.SUCCESS, data.getClientId()); return Response - .created(new URI(info.getRequestURL())) - .entity(info) + .created(new URI(response.getRequestInfo().getRequestURL())) + .entity(response) .type(MediaType.APPLICATION_XML) .build(); } catch (EBaseException | URISyntaxException e) { @@ -210,15 +211,16 @@ public class KeyRequestService extends PKIService implements KeyRequestResource throw new BadRequestException("No wrapped session key."); } KeyRequestDAO dao = new KeyRequestDAO(); - KeyRequestInfo info; + KeyRequestResponse response; try { - info = (data.getCertificate() != null)? + response = (data.getCertificate() != null)? requestKeyRecovery(data): dao.submitRequest(data, uriInfo); - auditRecoveryRequestMade(info.getRequestId(), ILogger.SUCCESS, data.getKeyId()); + auditRecoveryRequestMade(response.getRequestInfo().getRequestId(), + ILogger.SUCCESS, data.getKeyId()); return Response - .created(new URI(info.getRequestURL())) - .entity(info) + .created(new URI(response.getRequestInfo().getRequestURL())) + .entity(response) .type(MediaType.APPLICATION_XML) .build(); } catch (EBaseException | URISyntaxException e) { @@ -228,8 +230,8 @@ public class KeyRequestService extends PKIService implements KeyRequestResource } } - private KeyRequestInfo requestKeyRecovery(KeyRecoveryRequest data) { - KeyRequestInfo info = null; + private KeyRequestResponse requestKeyRecovery(KeyRecoveryRequest data) { + KeyRequestResponse response = null; if (data == null) { throw new BadRequestException("Invalid request."); } @@ -250,9 +252,9 @@ public class KeyRequestService extends PKIService implements KeyRequestResource } catch (EBaseException e) { } KeyRequestDAO dao = new KeyRequestDAO(); - info = dao.createCMSRequestInfo(request, uriInfo); + response = dao.createCMSRequestResponse(request, uriInfo); - return info; + return response; } @Override @@ -447,14 +449,15 @@ public class KeyRequestService extends PKIService implements KeyRequestResource } KeyRequestDAO dao = new KeyRequestDAO(); - KeyRequestInfo info; + KeyRequestResponse response; try { - info = dao.submitRequest(data, uriInfo); - auditSymKeyGenRequestMade(info.getRequestId(), ILogger.SUCCESS, data.getClientId()); + response = dao.submitRequest(data, uriInfo); + auditSymKeyGenRequestMade(response.getRequestInfo().getRequestId(), ILogger.SUCCESS, + data.getClientId()); return Response - .created(new URI(info.getRequestURL())) - .entity(info) + .created(new URI(response.getRequestInfo().getRequestURL())) + .entity(response) .type(MediaType.APPLICATION_XML) .build(); } catch (EBaseException | URISyntaxException e) { -- cgit