summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/certsrv/key
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2014-02-17 16:07:52 -0500
committerEndi S. Dewata <edewata@redhat.com>2014-02-19 11:10:13 -0500
commitabda3f089591fb9db31f6ddeb174e86c6bc0fbee (patch)
treec87095613684e80e4320426cc7bc529d01d5efbf /base/common/src/com/netscape/certsrv/key
parentf28f20174d269dc0ef8ed67fb927e7d4efad7ed2 (diff)
downloadpki-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.java105
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyResource.java18
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);
}