diff options
author | Endi S. Dewata <edewata@redhat.com> | 2014-02-17 16:07:52 -0500 |
---|---|---|
committer | Endi S. Dewata <edewata@redhat.com> | 2014-02-19 11:10:13 -0500 |
commit | abda3f089591fb9db31f6ddeb174e86c6bc0fbee (patch) | |
tree | c87095613684e80e4320426cc7bc529d01d5efbf /base/common/src/com/netscape/certsrv/key | |
parent | f28f20174d269dc0ef8ed67fb927e7d4efad7ed2 (diff) | |
download | pki-abda3f089591fb9db31f6ddeb174e86c6bc0fbee.tar.gz pki-abda3f089591fb9db31f6ddeb174e86c6bc0fbee.tar.xz pki-abda3f089591fb9db31f6ddeb174e86c6bc0fbee.zip |
Updated REST interface for keys.
The REST interface for keys has been modified to return Response
objects to allow better handling of server responses. Key-related
methods in KRAClient have been moved into KeyClient. The DRMTest
has been updated accordingly.
Ticket #554
Diffstat (limited to 'base/common/src/com/netscape/certsrv/key')
-rw-r--r-- | base/common/src/com/netscape/certsrv/key/KeyClient.java | 105 | ||||
-rw-r--r-- | base/common/src/com/netscape/certsrv/key/KeyResource.java | 18 |
2 files changed, 113 insertions, 10 deletions
diff --git a/base/common/src/com/netscape/certsrv/key/KeyClient.java b/base/common/src/com/netscape/certsrv/key/KeyClient.java index 7ab87fe09..bdb84fddb 100644 --- a/base/common/src/com/netscape/certsrv/key/KeyClient.java +++ b/base/common/src/com/netscape/certsrv/key/KeyClient.java @@ -18,13 +18,16 @@ package com.netscape.certsrv.key; import java.net.URISyntaxException; +import java.util.List; import javax.ws.rs.core.Response; import com.netscape.certsrv.base.ResourceMessage; import com.netscape.certsrv.client.Client; import com.netscape.certsrv.client.PKIClient; +import com.netscape.certsrv.dbs.keydb.KeyId; import com.netscape.certsrv.request.RequestId; +import com.netscape.cmsutil.util.Utils; /** * @author Endi S. Dewata @@ -46,14 +49,52 @@ public class KeyClient extends Client { public KeyInfoCollection findKeys(String clientID, String status, Integer maxSize, Integer maxTime, Integer start, Integer size) { - return keyClient.listKeys(clientID, status, maxSize, maxTime, start, size); + Response response = keyClient.listKeys(clientID, status, maxSize, maxTime, start, size); + return client.getEntity(response, KeyInfoCollection.class); + } + + public KeyInfo getActiveKeyInfo(String clientID) { + Response response = keyClient.getActiveKeyInfo(clientID); + return client.getEntity(response, KeyInfo.class); + } + + public KeyData retrieveKey(KeyId keyId, RequestId requestId, byte[] rpwd, byte[] rkey, byte[] nonceData) { + // create recovery request + KeyRecoveryRequest data = new KeyRecoveryRequest(); + data.setKeyId(keyId); + data.setRequestId(requestId); + if (rkey != null) { + data.setTransWrappedSessionKey(Utils.base64encode(rkey)); + } + if (rpwd != null) { + data.setSessionWrappedPassphrase(Utils.base64encode(rpwd)); + } + + if (nonceData != null) { + data.setNonceData(Utils.base64encode(nonceData)); + } + + return retrieveKey(data); } public KeyData retrieveKey(KeyRecoveryRequest data) { - return keyClient.retrieveKey(data); + Response response = keyClient.retrieveKey(data); + return client.getEntity(response, KeyData.class); + } + + public KeyRequestInfoCollection findRequests(String requestState, String requestType) { + return findRequests( + requestState, + requestType, + null, + new RequestId(0), + 100, + 100, + 10 + ); } - public KeyRequestInfoCollection findKeyRequests( + public KeyRequestInfoCollection findRequests( String requestState, String requestType, String clientID, @@ -71,15 +112,65 @@ public class KeyClient extends Client { maxTime); } + public KeyRequestInfo getRequestInfo(RequestId id) { + return keyRequestClient.getRequestInfo(id); + } + + public KeyRequestResponse archiveSecurityData(byte[] encoded, String clientId, String dataType, String algorithm, int strength) { + // create archival request + KeyArchivalRequest data = new KeyArchivalRequest(); + String req1 = Utils.base64encode(encoded); + data.setWrappedPrivateData(req1); + data.setClientId(clientId); + data.setDataType(dataType); + data.setKeyAlgorithm(algorithm); + data.setKeySize(strength); + + return createRequest(data); + } + + public KeyRequestResponse requestRecovery(KeyId keyId, byte[] rpwd, byte[] rkey, byte[] nonceData) { + // create recovery request + KeyRecoveryRequest data = new KeyRecoveryRequest(); + data.setKeyId(keyId); + if (rpwd != null) { + data.setSessionWrappedPassphrase(Utils.base64encode(rpwd)); + } + if (rkey != null) { + data.setTransWrappedSessionKey(Utils.base64encode(rkey)); + } + + if (nonceData != null) { + data.setNonceData(Utils.base64encode(nonceData)); + } + + return createRequest(data); + } + + public KeyRequestResponse requestKeyRecovery(String keyId, String b64Certificate) { + // create key recovery request + KeyRecoveryRequest data = new KeyRecoveryRequest(); + data.setKeyId(new KeyId(keyId)); + data.setCertificate(b64Certificate); + + return createRequest(data); + } + + public KeyRequestResponse generateKey(String clientId, String keyAlgorithm, int keySize, List<String> usages) { + SymKeyGenerationRequest data = new SymKeyGenerationRequest(); + data.setClientId(clientId); + data.setKeyAlgorithm(keyAlgorithm); + data.setKeySize(new Integer(keySize)); + data.setUsages(usages); + + return createRequest(data); + } + public KeyRequestResponse createRequest(ResourceMessage data) { Response response = keyRequestClient.createRequest(data); return client.getEntity(response, KeyRequestResponse.class); } - public KeyRequestInfo getRequestInfo(RequestId id) { - return keyRequestClient.getRequestInfo(id); - } - public void approveRequest(RequestId id) { keyRequestClient.approveRequest(id); } diff --git a/base/common/src/com/netscape/certsrv/key/KeyResource.java b/base/common/src/com/netscape/certsrv/key/KeyResource.java index 04d57fd2b..78ce15344 100644 --- a/base/common/src/com/netscape/certsrv/key/KeyResource.java +++ b/base/common/src/com/netscape/certsrv/key/KeyResource.java @@ -4,10 +4,14 @@ import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; +import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; +import javax.ws.rs.core.Response; + +import org.jboss.resteasy.annotations.ClientResponseType; import com.netscape.certsrv.acls.ACLMapping; import com.netscape.certsrv.authentication.AuthMethodMapping; @@ -19,14 +23,20 @@ import com.netscape.certsrv.authentication.AuthMethodMapping; public interface KeyResource { @GET + @ClientResponseType(entityType=KeyInfoCollection.class) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - public KeyInfoCollection listKeys(@QueryParam("clientID") String clientID, + public Response listKeys(@QueryParam("clientID") String clientID, @QueryParam("status") String status, @QueryParam("maxResults") Integer maxResults, @QueryParam("maxTime") Integer maxTime, @QueryParam("start") Integer start, @QueryParam("size") Integer size); + @GET + @Path("active/{clientID}") + @ClientResponseType(entityType=KeyInfo.class) + @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) + public Response getActiveKeyInfo(@PathParam("clientID") String clientID); /** * Used to retrieve a key @@ -35,14 +45,16 @@ public interface KeyResource { */ @POST @Path("retrieve") + @ClientResponseType(entityType=KeyData.class) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) - public KeyData retrieveKey(KeyRecoveryRequest data); + public Response retrieveKey(KeyRecoveryRequest data); // retrieval - used to test integration with a browser @POST @Path("retrieve") + @ClientResponseType(entityType=KeyData.class) @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON }) @Consumes({ MediaType.APPLICATION_FORM_URLENCODED }) - public KeyData retrieveKey(MultivaluedMap<String, String> form); + public Response retrieveKey(MultivaluedMap<String, String> form); } |