summaryrefslogtreecommitdiffstats
path: root/base/common/src/com/netscape/certsrv/key/KeyClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'base/common/src/com/netscape/certsrv/key/KeyClient.java')
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyClient.java105
1 files changed, 98 insertions, 7 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);
}