summaryrefslogtreecommitdiffstats
path: root/base/common/src
diff options
context:
space:
mode:
authorAde Lee <alee@redhat.com>2016-11-08 21:34:41 -0500
committerAde Lee <alee@redhat.com>2016-11-10 14:33:40 -0500
commite461ddefe339a428d322a3c9348e3e9ce88cbcc8 (patch)
treec3b4bf07c0d3989c123c4f97b81f45eb07a2d412 /base/common/src
parent62b84bcb8742b090f0c400d341ea7d7790443644 (diff)
Add field to KeyData to allow request to be returned when non-synchronous
If a retrieval is non-sychronous, we create a non-ephemeral recovery request and return this Request ID to the client.
Diffstat (limited to 'base/common/src')
-rw-r--r--base/common/src/com/netscape/certsrv/key/Key.java18
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyClient.java7
-rw-r--r--base/common/src/com/netscape/certsrv/key/KeyData.java22
3 files changed, 42 insertions, 5 deletions
diff --git a/base/common/src/com/netscape/certsrv/key/Key.java b/base/common/src/com/netscape/certsrv/key/Key.java
index 5f5baf707..60cc1b0c8 100644
--- a/base/common/src/com/netscape/certsrv/key/Key.java
+++ b/base/common/src/com/netscape/certsrv/key/Key.java
@@ -5,6 +5,7 @@ import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import com.netscape.certsrv.request.RequestId;
import com.netscape.cmsutil.util.Utils;
/**
@@ -37,16 +38,22 @@ public class Key {
@XmlElement
private byte[] data;
+ @XmlElement
+ private RequestId requestId;
+
public Key() {
super();
}
public Key(KeyData data) {
- encryptedData = Utils.base64decode(data.getWrappedPrivateData());
- nonceData = Utils.base64decode(data.getNonceData());
+ if (data.getWrappedPrivateData() != null)
+ encryptedData = Utils.base64decode(data.getWrappedPrivateData());
+ if (data.getNonceData() != null)
+ nonceData = Utils.base64decode(data.getNonceData());
p12Data = data.getP12Data();
algorithm = data.getAlgorithm();
size = data.getSize();
+ requestId = data.requestID;
}
public byte[] getEncryptedData() {
@@ -97,4 +104,11 @@ public class Key {
this.data = data;
}
+ public RequestId getRequestId() {
+ return requestId;
+ }
+
+ public void setRequestId(RequestId requestId) {
+ this.requestId = requestId;
+ }
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyClient.java b/base/common/src/com/netscape/certsrv/key/KeyClient.java
index 415c68e5a..8236d7f6b 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyClient.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyClient.java
@@ -367,8 +367,8 @@ public class KeyClient extends Client {
byte[] transWrappedSessionKey = crypto.wrapSessionKeyWithTransportCert(sessionKey, transportCert);
Key data = retrieveKey(keyId, transWrappedSessionKey);
-
- data.setData(crypto.unwrapWithSessionKey(data.getEncryptedData(), sessionKey,
+ if (data.getEncryptedData()!= null)
+ data.setData(crypto.unwrapWithSessionKey(data.getEncryptedData(), sessionKey,
KeyRequestResource.DES3_ALGORITHM, data.getNonceData()));
return data;
@@ -386,7 +386,8 @@ public class KeyClient extends Client {
recoveryRequest.setTransWrappedSessionKey(Utils.base64encode(transWrappedSessionKey));
Key data = retrieveKeyData(recoveryRequest);
- data.setData(crypto.unwrapWithSessionKey(data.getEncryptedData(), sessionKey,
+ if (data.getEncryptedData() != null)
+ data.setData(crypto.unwrapWithSessionKey(data.getEncryptedData(), sessionKey,
KeyRequestResource.DES3_ALGORITHM, data.getNonceData()));
return data;
}
diff --git a/base/common/src/com/netscape/certsrv/key/KeyData.java b/base/common/src/com/netscape/certsrv/key/KeyData.java
index e31cfb3e7..ee13812b1 100644
--- a/base/common/src/com/netscape/certsrv/key/KeyData.java
+++ b/base/common/src/com/netscape/certsrv/key/KeyData.java
@@ -25,6 +25,10 @@ import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+import com.netscape.certsrv.request.RequestId;
+import com.netscape.certsrv.request.RequestIdAdapter;
/**
* @author alee
@@ -54,6 +58,10 @@ public class KeyData {
// Will contain wrapped shared secret data.
// Can be used for anything in other scenarios
+ @XmlElement
+ @XmlJavaTypeAdapter(RequestIdAdapter.class)
+ RequestId requestID;
+
public KeyData() {
// required for JAXB (defaults)
}
@@ -139,5 +147,19 @@ public class KeyData {
this.size = size;
}
+ /**
+ * ID for the recovery request
+ * @return recovery request id
+ */
+ public RequestId getRequestID() {
+ return requestID;
+ }
+ /**
+ * Set request ID
+ * @param requestID
+ */
+ public void setRequestID(RequestId requestID) {
+ this.requestID = requestID;
+ }
}