diff options
Diffstat (limited to 'base/common/src/com/netscape/certsrv/key/KeyClient.java')
-rw-r--r-- | base/common/src/com/netscape/certsrv/key/KeyClient.java | 105 |
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); } |