diff options
| author | Ade Lee <alee@redhat.com> | 2016-11-08 21:34:41 -0500 |
|---|---|---|
| committer | Ade Lee <alee@redhat.com> | 2016-11-10 14:33:40 -0500 |
| commit | e461ddefe339a428d322a3c9348e3e9ce88cbcc8 (patch) | |
| tree | c3b4bf07c0d3989c123c4f97b81f45eb07a2d412 /base/common/src | |
| parent | 62b84bcb8742b090f0c400d341ea7d7790443644 (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.java | 18 | ||||
| -rw-r--r-- | base/common/src/com/netscape/certsrv/key/KeyClient.java | 7 | ||||
| -rw-r--r-- | base/common/src/com/netscape/certsrv/key/KeyData.java | 22 |
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; + } } |
